Ejemplo n.º 1
0
        public void AgregarCuentaMovimiento(OrdenesPago ordenPago, DetalleFormaPago pago)
        {
            var movimiento = new CuentasMovimiento();
            movimiento.ComprobanteId = ordenPago.Id;

            switch (pago.TipoPago)
            {
                case FormaPago.Transferencia:
                    var pagoTrans = pago as PagoTransferencia;
                    movimiento.Debito = pagoTrans.Importe;
                    movimiento.NroMovimiento = pagoTrans.Numero;
                    movimiento.CuentaId = (int)pagoTrans.CuentaId;
                    movimiento.FechaMovimiento = _clock.Now;
                    movimiento.Descripcion = pagoTrans.Descripcion;
                    movimiento.TipoComprobanteId = TipoComprobanteEnum.OrdenPago;
                    movimiento.TipoMovimientoId = (int)TipoMovimientoBancarioEnum.TransferenciaBancariaAProveedores;
                    break;
                case FormaPago.Deposito:
                    var pagoDeposito = pago as PagoDeposito;
                    movimiento.Debito = pagoDeposito.Importe;
                    movimiento.NroMovimiento = pagoDeposito.Numero;
                    movimiento.CuentaId = (int)pagoDeposito.DepositoCuentaId;
                    movimiento.FechaMovimiento = _clock.Now;
                    movimiento.Descripcion = pagoDeposito.Descripcion;
                    movimiento.TipoComprobanteId = TipoComprobanteEnum.OrdenPago;
                    movimiento.TipoMovimientoId = (int)TipoMovimientoBancarioEnum.DepositoEfectivo;
                    break;
            }

            Caja caja = _cajaActual;

            movimiento.FechaAlta = _clock.Now;
            movimiento.SucursalAltaId = _context.SucursalActual.Id;
            movimiento.OperadorAltaId = _context.OperadorActual.Id;

            _uow.CuentasMovimientos.Agregar(movimiento);
        }
Ejemplo n.º 2
0
        private void BtnGuardar_Click(object sender, EventArgs e)
        {
            if (Monto != ucTotalesSeña.TotalPagar)
            {
                _messageBoxDisplayService.ShowError("Los montos no coinciden");
                return;
            }

            Guid operadorAutoriza = Guid.Empty;

            if (_formMode == ActionFormMode.Edit)
            {

                //////Autorizacion para sin movimiento
                var operador = this.ObtenerOperadorAdministrador();

                if (operador == null)
                {
                    return;
                }

                if (!this.EsOperadorAdmin)
                {
                    //Guardamos el operador que autorizo la operacion.
                    operadorAutoriza = operador.Id;
                }

            }
            ////////////////////////////////




            //TODO: Reemplzar el numero cuando se agrege la columna a sucursal.
            int numeroDeSucursal = 1;

            ClienteMontoFavor clienteMontoFavor = new ClienteMontoFavor();
            clienteMontoFavor.Id = Guid.NewGuid();
            clienteMontoFavor.ClienteId = _cliente.Id;
            clienteMontoFavor.FechaComprobante = _clock.Now;
            clienteMontoFavor.TipoComprobanteId = TipoComprobanteEnum.SeñaCliente;
            clienteMontoFavor.LCN = "R" + numeroDeSucursal.ToString().PadLeft(4, '0') + CalcularLCN().PadLeft(8, '0');
            clienteMontoFavor.Concepto = "Seña " + clienteMontoFavor.LCN;
            clienteMontoFavor.Importe = ucTotalesSeña.TotalPagar;
            clienteMontoFavor.ImpOcupado = 0;
            clienteMontoFavor.Observaciones = TipoComprobanteEnum.SeñaCliente.ToString();
            clienteMontoFavor.FechaAlta = _clock.Now;
            clienteMontoFavor.OperadorAltaId = Context.OperadorActual.Id;
            clienteMontoFavor.SucursalAltaId = Context.SucursalActual.Id;
            if (operadorAutoriza != Guid.Empty)
                clienteMontoFavor.OperadorAutoriza = operadorAutoriza;

            Uow.ClientesMontosFavor.Agregar(clienteMontoFavor);

            //Si el Form=Editar significa que es SinGuardar los movimientos de caja
            if (_formMode == ActionFormMode.Create)
            {
                //ActualizarCaja y CajaMovimiento
                Caja caja = this.Context.CajaActual;
                if (caja.Egresos == null)
                    caja.Egresos = 0;
                caja.Ingresos += (float?)ucTotalesSeña.TotalPagar;
                caja.Saldo += (float?)ucTotalesSeña.TotalPagar;
                caja.FechaModificacion = _clock.Now;
                caja.SucursalModificacionId = 2;//Sucursal del operador
                caja.OperadorModificacionId = (Context.OperadorActual.Id);//Id el operador

                Uow.Cajas.Modificar(caja);

                CajaMovimiento cajaMovimiento = new CajaMovimiento();
                cajaMovimiento.Id = Guid.NewGuid();
                cajaMovimiento.CajaId = caja.Id;
                cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.SeñaCliente;
                cajaMovimiento.TipoComprobante = TipoComprobanteEnum.SeñaCliente;
                cajaMovimiento.ComprobanteId = clienteMontoFavor.Id;
                cajaMovimiento.Importe = ucTotalesSeña.TotalPagar;
                cajaMovimiento.FechaAlta = _clock.Now;
                cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id;
                cajaMovimiento.PcAlta = Environment.MachineName;
                //tipos de pagos
                foreach (VentaPago pago in ucTotalesSeña.Pagos)
                {
                    switch (pago.TipoPago)
                    {
                        case FormaPago.Efectivo:
                            cajaMovimiento.Efectivo = pago.Importe;
                            break;
                        case FormaPago.Tarjeta:
                            var pagoTarjeta = pago as VentaPagoTarjeta;
                            if (cajaMovimiento.Tarjeta == null)
                                cajaMovimiento.Tarjeta = 0;

                            cajaMovimiento.Tarjeta += pago.Importe;
                            //GUARDAR TARJETA MOVIMIENTO 
                            TarjetasMovimiento tarjetasMovimiento = new TarjetasMovimiento();
                            tarjetasMovimiento.CajaMovimientoId = cajaMovimiento.Id;
                            tarjetasMovimiento.TarjetaId = pagoTarjeta.TarjetaId ?? 0;
                            tarjetasMovimiento.LoteCupon = pagoTarjeta.CuponNumero;
                            tarjetasMovimiento.Fecha = _clock.Now;
                            tarjetasMovimiento.Importe = (float)pago.Importe;
                            tarjetasMovimiento.Estado = 1; // No se 
                            tarjetasMovimiento.FechaAlta = _clock.Now;
                            tarjetasMovimiento.SucursalAltaId = Context.SucursalActual.Id; //Sucursal del operador
                            tarjetasMovimiento.OperadorAltaId = (Context.OperadorActual.Id); //Id el operador

                            Uow.TarjetasMovimientos.Agregar(tarjetasMovimiento);
                            break;
                        case FormaPago.Cheque:
                            var pagoCheque = pago as VentaPagoCheque;

                            if (cajaMovimiento.Cheque == null)
                                cajaMovimiento.Cheque = 0;

                            cajaMovimiento.Cheque += pago.Importe;

                            ChequesTercero chequesTercero = new ChequesTercero();
                            chequesTercero.Id = Guid.NewGuid();
                            chequesTercero.CajaMovimientoId = cajaMovimiento.Id;
                            chequesTercero.BancoId = pagoCheque.BancoId ?? 0;
                            chequesTercero.NroCheque = pagoCheque.Numero;
                            chequesTercero.Fecha = _clock.Now;
                            chequesTercero.FechaCobro = _clock.Now;
                            chequesTercero.Importe = (float)pago.Importe;
                            chequesTercero.FechaAlta = _clock.Now;
                            chequesTercero.SucursalAltaId = Context.SucursalActual.Id;
                            chequesTercero.OperadorAltaId = (Context.OperadorActual.Id);

                            Uow.ChequesTerceros.Agregar(chequesTercero);
                            break;
                        case FormaPago.Deposito:
                            var pagoDeposito = pago as VentaPagoDeposito;
                            if (cajaMovimiento.Deposito == null)
                                cajaMovimiento.Deposito = 0;

                            //Guardar Cuentas Movimientos
                            cajaMovimiento.Deposito += pago.Importe;

                            CuentasMovimiento cuentasMovimiento = new CuentasMovimiento();
                            cuentasMovimiento.CuentaId = pagoDeposito.CuentaId;
                            cuentasMovimiento.TipoMovimientoId = 2; //Deposito
                            cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha;
                            cuentasMovimiento.EstadoMovimientoCuentaId = 0;
                            cuentasMovimiento.TipoComprobanteId = TipoComprobanteEnum.SeñaCliente;
                            cuentasMovimiento.ComprobanteId = clienteMontoFavor.Id;
                            cuentasMovimiento.MonedaId = 0;
                            cuentasMovimiento.CondicionVentaId = CondicionVentaEnum.Contado;
                            cuentasMovimiento.NroMovimiento = pagoDeposito.Numero;
                            cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString();
                            cuentasMovimiento.FechaCobro = _clock.Now;
                            cuentasMovimiento.Debito = 0;
                            cuentasMovimiento.Credito = pago.Importe;
                            cuentasMovimiento.TipoCarga = 2;
                            cuentasMovimiento.CajaId = caja.Id;
                            cuentasMovimiento.FechaAlta = _clock.Now;
                            cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                            cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                            Uow.CuentasMovimientos.Agregar(cuentasMovimiento);
                            break;

                    }
                }

                Uow.CajaMovimientos.Agregar(cajaMovimiento);
            }


            Uow.Commit();
            _messageBoxDisplayService.ShowSuccess("Seña generada con éxito");

            //Si el Form=Editar significa que es SinGuardar los movimientos de caja
            if (_formMode == ActionFormMode.Create)
            {
                var crearSenia = FormFactory.Create<FrmComprobante>();
                crearSenia._concepto = "Seña de Cliente";
                crearSenia._LCN = clienteMontoFavor.LCN;
                var conv = new Conversion();

                crearSenia._montoTexto = conv.enletras(ucTotalesSeña.TotalPagar.ToString());
                //crearSenia._montoTexto = "cien";
                crearSenia.Show();
            }

            BuscarHistorial();
            Limpiar();
        }
        private void GuardarPagosConsignacion()
        {
            if (!ValidarPagoConsignacion())
                return;

            //Acumulamos los pagos
            decimal? efectivo = 0;
            decimal? efectivoCajaAnterior = 0;
            decimal? tarjeta = 0;
            decimal? cheque = 0;
            decimal? deposito = 0;
            decimal? transferencia = 0;

            foreach (var pago in ucTotalesCompraSeña1.Pagos)
            {
                switch (pago.TipoPago)
                {
                    case FormaPago.Efectivo:
                        efectivo += pago.Importe;
                        break;

                    case FormaPago.EfectivoCajaAnterior:
                        efectivoCajaAnterior += pago.Importe;
                        break;

                    case FormaPago.Tarjeta:
                        tarjeta += pago.Importe;
                        break;

                    case FormaPago.Cheque:
                        cheque += pago.Importe;
                        break;

                    case FormaPago.Deposito:
                        deposito += pago.Importe;
                        break;

                    case FormaPago.Transferencia:
                        transferencia += pago.Importe;
                        break;
                }
            }



            #region Guardamos caja en contado

            //Guardamos la caja
            Caja caja = new Caja();
            if (DtpFechaPago.Value != _clock.Now)
            {
                caja = Uow.Cajas.Obtener(c => DbFunctions.TruncateTime(c.FechaAlta) == DtpFechaPago.Value.Date);
                if (caja == null)
                {
                    MessageBox.Show("No se encontro una caja válida para esa fecha");
                    return;
                }
            }
            else
            {
                caja = this.Context.CajaActual;

                //descontar de la caja
                if (caja.Egresos == null)
                    caja.Egresos = 0;

                caja.Egresos += (float?)efectivo;

                if (caja.Saldo == null)
                    caja.Saldo = 0;
                caja.Saldo -= (float?)ucTotalesCompraSeña1.SubTotal;

                caja.FechaModificacion = _clock.Now;
                caja.SucursalModificacionId = Context.SucursalActual.Id;
                caja.OperadorModificacionId = (Context.OperadorActual.Id);
            }


            //aca descontamos las señas en el caso de que se utilicen. 
            var _seña = UsoDeSeña();
            var _credito = UsoDeCredito();
            var _egreso = UsoEgreso();

            if (efectivo > 0)
            {
                CajaMovimiento cajaMovimiento = new CajaMovimiento();
                cajaMovimiento.Id = Guid.NewGuid();
                cajaMovimiento.CajaId = caja.Id;

                cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedores;

                //le paso guid empty pero hay que ver que se le pasa
                cajaMovimiento.ComprobanteId = _pagoIdConsignacion;
                cajaMovimiento.Importe = efectivo;
                cajaMovimiento.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal;
                cajaMovimiento.Efectivo = efectivo;

                cajaMovimiento.Senia = _seña + _credito + _egreso;
                if (_seña > 0)
                {
                    //cajaMovimiento.Senia = _seña;
                    _seña = 0;
                }

                if (_credito > 0)
                {
                    //cajaMovimiento.Senia = _seña;
                    _credito = 0;
                }

                if (_egreso > 0)
                {
                    _egreso = 0;
                }

                cajaMovimiento.FechaAlta = DtpFechaPago.Value;

                cajaMovimiento.PcAlta = System.Environment.MachineName;
                cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                cajaMovimiento.OperadorModificacionId = Context.OperadorActual.Id;
                cajaMovimiento.FechaModificacion = _clock.Now;
                cajaMovimiento.SucursalModificacionId = Context.SucursalActual.Id;

                cajaMovimiento.TipoComprobante = TipoComprobanteEnum.PagoProveedores;
                Uow.CajaMovimientos.Agregar(cajaMovimiento);
            }

            if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0)
            {
                CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento();
                cajaMovimientoAnterior.Id = Guid.NewGuid();
                cajaMovimientoAnterior.CajaId = caja.Id;

                //cajaMovimientoAnterior.TipoMovimientoCajaId =
                //    TipoMovimientoCajaEnum.PagoProveedorCajaAnterior; -2
                cajaMovimientoAnterior.TipoMovimientoCajaId =
                    TipoMovimientoCajaEnum.PagoCtaProveedorCajaAnterior;

                cajaMovimientoAnterior.ComprobanteId = _pagoIdConsignacion;
                cajaMovimientoAnterior.Importe = tarjeta + deposito + cheque + efectivoCajaAnterior + transferencia;
                cajaMovimientoAnterior.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal;
               
                cajaMovimientoAnterior.FechaModificacion = _clock.Now;
                cajaMovimientoAnterior.PcAlta = System.Environment.MachineName;
                cajaMovimientoAnterior.OperadorAltaId = Context.OperadorActual.Id;
                cajaMovimientoAnterior.SucursalAltaId = Context.SucursalActual.Id;
                cajaMovimientoAnterior.OperadorModificacionId = Context.OperadorActual.Id;
                cajaMovimientoAnterior.SucursalModificacionId = Context.SucursalActual.Id;
                cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.PagoProveedores;
                cajaMovimientoAnterior.Efectivo = efectivoCajaAnterior;
                cajaMovimientoAnterior.Tarjeta = tarjeta;
                cajaMovimientoAnterior.Deposito = deposito;
                
                cajaMovimientoAnterior.Cheque = cheque;
                cajaMovimientoAnterior.Transferencia = transferencia;

                //if (cheque > 0)
                //    cajaMovimientoAnterior.FechaAlta = tipo;
                //else
                    cajaMovimientoAnterior.FechaAlta = _clock.Now;


                cajaMovimientoAnterior.Senia = _seña + _credito + _egreso;
              
                Uow.CajaMovimientos.Agregar(cajaMovimientoAnterior);

                //Guardamos el movimiento del depósito
                foreach (var pago in ucTotalesCompraSeña1.Pagos)
                {
                    switch (pago.TipoPago)
                    {
                        case FormaPago.Cheque:
                            // HACER ALGO
                            break;

                        case FormaPago.Deposito:
                            var pagoDeposito = pago as VentaPagoDeposito;

                            CuentasMovimiento cuentasMovimiento = new CuentasMovimiento();
                            cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0;
                            cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor
                            cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha;
                            cuentasMovimiento.EstadoMovimientoCuentaId = 0;

                            //CONTROLAR!!
                            cuentasMovimiento.TipoComprobanteId = TipoComprobanteEnum.PagoProveedores;

                            //le paso guid empty pero hay que ver que se le pasa
                            cuentasMovimiento.ComprobanteId = Guid.Empty;
                            cuentasMovimiento.MonedaId = 0;
                            cuentasMovimiento.NroMovimiento = pagoDeposito.Numero;
                            cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString();
                            cuentasMovimiento.FechaCobro = _clock.Now;
                            cuentasMovimiento.Debito = pago.Importe;
                            cuentasMovimiento.Credito = 0;
                            cuentasMovimiento.TipoCarga = 1;
                            cuentasMovimiento.CajaId = caja.Id;
                            cuentasMovimiento.FechaAlta = _clock.Now;
                            cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                            cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                            Uow.CuentasMovimientos.Agregar(cuentasMovimiento);
                            break;

                        case FormaPago.Transferencia:
                            var pagoTransferencia = pago as VentaPagoTransferencia;

                            CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento();
                            cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0;
                            cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor
                            cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha;
                            cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0;

                            //CONTROLAR!!
                            cuentasMovimientoTransferecia.TipoComprobanteId = TipoComprobanteEnum.PagoProveedores;
                            //le paso guid empty pero hay que ver que se le pasa
                            cuentasMovimientoTransferecia.ComprobanteId = Guid.Empty;
                            cuentasMovimientoTransferecia.MonedaId = 0;
                            cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero;
                            cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA NRO " + pagoTransferencia.Numero.ToString();
                            cuentasMovimientoTransferecia.FechaCobro = _clock.Now;
                            cuentasMovimientoTransferecia.Debito = pago.Importe;
                            cuentasMovimientoTransferecia.Credito = 0;
                            cuentasMovimientoTransferecia.TipoCarga = 1;
                            cuentasMovimientoTransferecia.CajaId = caja.Id;
                            cuentasMovimientoTransferecia.FechaAlta = _clock.Now;
                            cuentasMovimientoTransferecia.OperadorAltaId = Context.OperadorActual.Id;
                            cuentasMovimientoTransferecia.SucursalAltaId = Context.SucursalActual.Id;

                            Uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia);
                            break;
                    }
                }

            }


            Uow.Cajas.Modificar(caja);

            #endregion



            Uow.Commit();

            _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessPagoExitoso);

        }
Ejemplo n.º 4
0
        private void BtnGuardar_Click(object sender, EventArgs e)
        {

            if (_proveedor == null)
            {
                return;
            }
            if (!ucTitulosCompra.Titulos.Any())
            {
                _messageBoxDisplayService.ShowError("Debe seleccionar al menos un libro para la compra.");
                return;
            }

            if (!ucTotalesCompraSeña1.Validar())
            {
                return;
            }

            if (ucTipoCompra.TipoComprobanteSeleccionado== Entidades.Enums.TipoComprobanteEnum.FacCpraContado)
            {
                if(TxtRemito1.Text==""||TxtRemito2.Text==""||TxtFactura1.Text==""||TxtFactura2.Text=="")
                    return;
            }

            if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte)
            {
                if (TxtRemito1.Text == "" || TxtRemito2.Text == "" || TxtFactura1.Text == "" || TxtFactura2.Text == "" || ucCuentaCorrienteCompra.Cuotas == null)
                    return;
            }

            if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor)
            {
                  if (TxtRemito1.Text == "" || TxtRemito2.Text == "" || DtpFechaVencimiento.Value.Date<_clock.Now.Date)
                      return;
            }

            //Acumulamos los pagos
            decimal? efectivo = 0;
            decimal? efectivoCajaAnterior = 0;
            decimal? tarjeta = 0;
            decimal? cheque = 0;
            decimal? deposito = 0;
            decimal? transferencia = 0;

            foreach (var pago in ucTotalesCompraSeña1.Pagos)
            {
                switch (pago.TipoPago)
                {
                    case FormaPago.Efectivo:
                        efectivo += pago.Importe;
                        break;

                    case FormaPago.EfectivoCajaAnterior:
                        efectivoCajaAnterior += pago.Importe;
                        break;

                    case FormaPago.Tarjeta:
                        tarjeta += pago.Importe;
                        break;

                    case FormaPago.Cheque:
                        cheque += pago.Importe;
                        //Guardar una cajaMovimiento por cada cheque con la fecha de cobro como fecha de alta
                        //var cajaMovimiento = new CajaMovimiento();
                        //cajaMovimiento.Id = Guid.NewGuid();
                        //cajaMovimiento.CajaId = Context.CajaActual.Id;
                        //cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedorCajaAnterior;
                        //cajaMovimiento.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado;
                        //cajaMovimiento.ComprobanteId = _idCompra;
                        //cajaMovimiento.Importe = pago.Importe;
                        //cajaMovimiento.ImpFac = pago.Importe;
                        //cajaMovimiento.Cheque = pago.Importe;
                        //VentaPagoCheque vcheque = (VentaPagoCheque)pago;
                        //cajaMovimiento.FechaAlta = vcheque.FechaCobro;
                        //cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                        //cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                        //Uow.CajaMovimientos.Agregar(cajaMovimiento);
                        break;

                    case FormaPago.Deposito:
                        deposito += pago.Importe;
                        break;

                    case FormaPago.Transferencia:
                        transferencia += pago.Importe;
                        break;
                }
            }


            //Pedimos autorización para caja anterior
            if (efectivoCajaAnterior > 0)
            {
                Guid operadorAutoriza = Guid.Empty;

                //////Autorizacion para sin movimiento
                var operador = this.ObtenerOperadorAdministrador();

                if (operador == null)
                {
                    return;
                }

                if (!this.EsOperadorAdmin)
                {
                    //Guardamos el operador que autorizo la operacion.
                    operadorAutoriza = operador.Id;
                }
            }

            //Compras
            Guid _idCompra = Guid.NewGuid();
            string _lcn = "";
            PuntoVenta = Context.SucursalActual.SucursalNumero ?? 1;
            Compra compraNueva = new Compra();

            switch (ucTipoCompra.TipoComprobanteSeleccionado)
            {
                case Entidades.Enums.TipoComprobanteEnum.FacCpraContado:
                    EstadoCompra = 1;
                    break;

                case Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte:
                    EstadoCompra = 1;
                    break;

                case Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor:
                    compraNueva.FechaVencimiento = DtpFechaVencimiento.Value;
                    NumeroComprobante = (Convert.ToInt32(TxtRemito2.Text)).ToString();

                    LetraComprobante = "X";
                    EstadoCompra = 1;
                    break;

                case Entidades.Enums.TipoComprobanteEnum.IngresosProducción:
                    NumeroComprobante = (Convert.ToInt16(TxtRemito2.Text)).ToString();
                    DdlFacturaTipo.Enabled = true;
                    DdlFacturaTipo.Visible = true;
                    LetraComprobante = "X";
                    EstadoCompra = 1;
                    break;

                case Entidades.Enums.TipoComprobanteEnum.RemitosAnulacConsigVend:
                    EstadoCompra = 2;
                    break;
            }

            //controlo cuantos ceros me faltan para armar el lcn y los agrego en la variable ceros
            string _ceros = "";
            for (int i = 0; i < (13 - (NumeroComprobante.Count() + 3 + PuntoVenta.ToString().Count())); i++)
            {
                _ceros += "0";
            }

            _lcn += LetraComprobante + PuntoVenta.ToString().PadLeft(3,'0')+ _ceros + NumeroComprobante;
            NumeroComprobante = TxtRemito1.Text + TxtRemito2.Text;

            //compraNueva.
            compraNueva.Id = _idCompra;
            compraNueva.LCN = _lcn;
            compraNueva.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado;
            compraNueva.ProveedorId = _proveedor.Id;
            compraNueva.LetraComprobante = LetraComprobante;
            compraNueva.PuntoVenta = PuntoVenta;
            compraNueva.NumeroComprobante = NumeroComprobante;
            compraNueva.FechaComprobante = DtpFechaEmision.Value;
            compraNueva.Concepto = ucTipoCompra.TipoComprobanteSeleccionado.ToString();
            compraNueva.ImporteNeto = ucTitulosCompra.CalcularSubTotal();
            compraNueva.Observaciones = Observaciones;
            compraNueva.EstadoCompraId = EstadoCompra;
            compraNueva.OperadorAltaId = (Context.OperadorActual.Id);
            compraNueva.SucursalAltaId = Context.SucursalActual.Id;
            compraNueva.FechaAlta = _clock.Now;
            Uow.Compras.Agregar(compraNueva);

            //FacturaCompra.
            FacturasCompra facturaCompra = new FacturasCompra();
            facturaCompra.Id = Guid.NewGuid();
            facturaCompra.CompraId = _idCompra;
            facturaCompra.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado;
            facturaCompra.ProveedorId = _proveedor.Id;
            facturaCompra.LCN = _lcn;
            facturaCompra.PuntoVenta = PuntoVenta;
            facturaCompra.NumeroComprobante = NumeroComprobante;
            facturaCompra.Concepto = ucTipoCompra.TipoComprobanteSeleccionado.ToString();
            facturaCompra.FechaComprobante = _clock.Now;
            if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente)
                facturaCompra.FechaVencimiento = DtpFechaEmision.Value;
            facturaCompra.ImporteNeto = ucTotalesCompraSeña1.SubTotal;
            facturaCompra.ImporteIVA = ucTotalesCompraSeña1.SubTotal;
            facturaCompra.EstadoId = 0;
            facturaCompra.FechaAlta = _clock.Now;
            facturaCompra.SucursalAltaId = Context.SucursalActual.Id;
            facturaCompra.OperadorAltaId = Context.OperadorActual.Id;
            Uow.FacturasCompras.Agregar(facturaCompra);

            //Remito
            if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraContado || 
                ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte ||
                ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente)
            {
            RemitosCompra remitoCompra = new RemitosCompra();
            remitoCompra.Id = Guid.NewGuid();
            _remitoID = remitoCompra.Id;
            remitoCompra.CompraId = _idCompra;
            //remitoCompra.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado;
            remitoCompra.ProveedorId = _proveedor.Id;
            remitoCompra.LCN = _lcn;
            remitoCompra.PuntoVenta = PuntoVenta;
            remitoCompra.NumeroComprobante = NumeroComprobante;
            remitoCompra.Concepto = ucTipoCompra.TipoComprobanteSeleccionado.ToString();
            remitoCompra.FechaComprobante = DtpFechaEmision.Value;
            if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente)
                remitoCompra.FechaVencimiento = DtpFechaVencimiento.Value;
            remitoCompra.ImporteNeto = ucTotalesCompraSeña1.SubTotal;
            remitoCompra.ImporteIVA = ucTotalesCompraSeña1.SubTotal;
            remitoCompra.Observaciones = Observaciones;
            remitoCompra.EstadoId = EstadoCompra;
            remitoCompra.FechaAlta = _clock.Now;
            remitoCompra.SucursalAltaId = Context.SucursalActual.Id;
            remitoCompra.OperadorAltaId = Context.SucursalActual.OperadorAltaId;
            Uow.RemitosCompra.Agregar(remitoCompra);
            }
           
            
            //TitulosStock. & Compra detalle
            foreach (var titulo in ucTitulosCompra.Titulos)
            {
                var tituloStock =
                Uow.TitulosStock.Obtener(ts => ts.TituloId == titulo.TituloId && ts.SucursalId == Context.SucursalActual.Id);

                //Compra detalle
                ComprasDetalle compraDetalle = new ComprasDetalle();
                compraDetalle.CompraId = _idCompra;
                compraDetalle.Id = Guid.NewGuid();
                compraDetalle.TituloId = titulo.TituloId;
                if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor)
                {
                    compraDetalle.CntCn = titulo.CantidadCompra;
                    compraDetalle.CntPr = 0;
                }
                else
                {
                    compraDetalle.CntPr = titulo.CantidadCompra;
                    compraDetalle.CntCn = 0;
                }
                compraDetalle.PrecioCompra = titulo.PrecioBase;
                compraDetalle.PrecioVenta = titulo.PrecioVenta;
                compraDetalle.FechaAlta = _clock.Now;
                compraDetalle.SucursalAltaId = Context.SucursalActual.Id;
                compraDetalle.OperadorAltaId = Context.OperadorActual.Id;
                compraDetalle.FechaModificacion = _clock.Now;
                compraDetalle.SucursalModificacionId = Context.SucursalActual.Id;
                compraDetalle.OperadorModificacionId = Context.OperadorActual.Id;
                Uow.ComprasDetalles.Agregar(compraDetalle);

                //Aumentar stock
                //deacuerdo al tipo de compra modificar el stock propio o en consigancion
                if (tituloStock == null)
                {
                    TituloStock tituloStockNuevo = new TituloStock();
                    tituloStockNuevo.TituloId = titulo.TituloId;
                    tituloStockNuevo.SucursalId = Context.SucursalActual.Id;
                    if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor)
                    {
                        tituloStockNuevo.StkPr = 0;
                        tituloStockNuevo.StkCn = titulo.CantidadCompra;
                    }
                    else
                    {
                        tituloStockNuevo.StkPr = titulo.CantidadCompra;
                        tituloStockNuevo.StkCn = 0;
                    }

                    tituloStockNuevo.FechaAlta = _clock.Now;
                    tituloStockNuevo.OperadorAltaId = (Context.OperadorActual.Id);
                    tituloStockNuevo.SucursalAltaId = Context.SucursalActual.Id;
                    Uow.TitulosStock.Agregar(tituloStockNuevo);
                }
                else
                {
                    //Aumento el stock propio o consignado de acuerdo a la opcion seleccionada.
                    if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor)
                    {
                        if (tituloStock.StkCn == null)
                            tituloStock.StkCn = titulo.CantidadCompra;
                        else
                            tituloStock.StkCn += titulo.CantidadCompra;
                    }
                    else
                        if (tituloStock.StkPr == null)
                            tituloStock.StkPr = titulo.CantidadCompra;
                        else
                            tituloStock.StkPr += titulo.CantidadCompra;

                    tituloStock.FechaModificacion = _clock.Now;
                    tituloStock.OperadorModificacionId = (Context.OperadorActual.Id);
                    tituloStock.SucursalModificacionId = Context.SucursalActual.Id;
                    Uow.TitulosStock.Modificar(tituloStock);
                }

                //FacturasCompraDetalle.
                FacturasComprasDetalle facturasComprasDetalle = new FacturasComprasDetalle();
                facturasComprasDetalle.Id = Guid.NewGuid();
                facturasComprasDetalle.FacturaCompraId = facturaCompra.Id;
                facturasComprasDetalle.TituloId = titulo.TituloId;

                if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor)
                {
                    facturasComprasDetalle.CntCn = titulo.CantidadCompra;
                    facturasComprasDetalle.CntPr = 0;
                }
                else
                {
                    facturasComprasDetalle.CntPr = titulo.CantidadCompra;
                    facturasComprasDetalle.CntCn = 0;
                }

                facturasComprasDetalle.PrecioCompra = titulo.PrecioBase;
                facturasComprasDetalle.PrecioVenta = titulo.PrecioVenta;
                facturasComprasDetalle.FechaAlta = _clock.Now;
                facturasComprasDetalle.SucursalAltaId = Context.SucursalActual.Id;
                facturasComprasDetalle.OperadorAltaId = (Context.OperadorActual.Id);
                
                Uow.FacturasComprasDetalles.Agregar(facturasComprasDetalle);

                if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.RemitosConsignacProveedor)
                {
                    //(TitulosConsiganciones).
                    TitulosConsignacion tituloConsignacion = new TitulosConsignacion();
                    tituloConsignacion.Id = Guid.NewGuid();
                    tituloConsignacion.TituloId = titulo.TituloId;
                    tituloConsignacion.ClienteId = Guid.Empty;
                    tituloConsignacion.ProveedorId = _proveedor.Id;
                    tituloConsignacion.TipoConsignacion = _tipoConsignacion;
                    tituloConsignacion.CntPr = 0;
                    tituloConsignacion.CntCn = titulo.CantidadCompra.GetValueOrDefault();
                    tituloConsignacion.CntVn = 0;
                    tituloConsignacion.FechaAlta = _clock.Now;
                    tituloConsignacion.SucursalAltaId = Context.SucursalActual.Id;
                    tituloConsignacion.OperadorAltaId = Context.OperadorActual.Id;
                    
                    Uow.TitulosConsignaciones.Agregar(tituloConsignacion);
                }
                //Remito Detalle
                if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraContado || 
                    ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte ||
                    ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente)
                {
                    RemitosCompraDetalle remitoCompraDetalle = new RemitosCompraDetalle();
                    remitoCompraDetalle.Id = Guid.NewGuid();
                    remitoCompraDetalle.RemitoCompraId = _remitoID;
                    remitoCompraDetalle.TituloId = titulo.TituloId;
                    if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraConsigCliente)
                        remitoCompraDetalle.CntCn = titulo.CantidadCompra;
                    else
                        remitoCompraDetalle.CntPr = titulo.CantidadCompra;
                    remitoCompraDetalle.PrecioCompra = titulo.PrecioBase;
                    remitoCompraDetalle.PrecioVenta = titulo.PrecioVenta;
                    remitoCompraDetalle.FechaAlta = _clock.Now;
                    remitoCompraDetalle.SucursalAltaId = Context.SucursalActual.Id;
                    remitoCompraDetalle.OperadorAltaId = Context.OperadorActual.Id;
                    Uow.RemitosCompraDetalle.Agregar(remitoCompraDetalle);
                }
            }

            //Cuenta corriente
            if (ucTipoCompra.TipoComprobanteSeleccionado == Entidades.Enums.TipoComprobanteEnum.FacCpraCtaCte)
            {
                //Guardo toda la cuenta corriente
                var cuotas = ucCuentaCorrienteCompra.Cuotas;
                for (int i = 1; i <= cuotas; i++)
                {
                    ProveedoresCuentasCorriente proveedoresCuentaCorriente = new ProveedoresCuentasCorriente();
                    proveedoresCuentaCorriente.Id = Guid.NewGuid();
                    proveedoresCuentaCorriente.CompraId = _idCompra;
                    proveedoresCuentaCorriente.ProveedorId = _proveedor.Id;
                    proveedoresCuentaCorriente.Cuota = i;
                    proveedoresCuentaCorriente.Fecha = _clock.Now;
                    DateTime venc = ucCuentaCorrienteCompra.Vencimiento;
                    proveedoresCuentaCorriente.FechaVencimiento = venc.AddMonths(i - 1);
                    proveedoresCuentaCorriente.Importe = Convert.ToDecimal(ucCuentaCorrienteCompra.Montocuota);
                    proveedoresCuentaCorriente.Pagado = 0;
                    proveedoresCuentaCorriente.Observaciones = "";
                    proveedoresCuentaCorriente.FechaAlta = _clock.Now;
                    proveedoresCuentaCorriente.SucursalAltaId = Context.SucursalActual.Id;
                    proveedoresCuentaCorriente.OperadorAltaId = Context.OperadorActual.Id;
                    proveedoresCuentaCorriente.FechaModificacion = _clock.Now;
                    proveedoresCuentaCorriente.SucursalModificacionId = Context.SucursalActual.Id;
                    proveedoresCuentaCorriente.OperadorModificacionId = Context.OperadorActual.Id;
                    Uow.ProveedoresCuentasCorrientes.Agregar(proveedoresCuentaCorriente);
                }
            }

            #region Guardamos caja en contado
            
            //Guardamos la caja
            if (ucTipoCompra.TipoComprobanteSeleccionado == TipoComprobanteEnum.FacCpraContado)
            {
                Caja caja = this.Context.CajaActual;
                
                switch (ucTipoCompra.TipoComprobanteSeleccionado)
                {

                    case TipoComprobanteEnum.FacCpraContado:


                        //descontar de la caja
                        if (caja.Egresos == null)
                            caja.Egresos = 0;

                        caja.Egresos += (float?) efectivo;

                        if (caja.Saldo == null)
                            caja.Saldo = 0;
                        caja.Saldo -= (float?) ucTotalesCompraSeña1.SubTotal;

                        caja.FechaModificacion = _clock.Now;
                        caja.SucursalModificacionId = Context.SucursalActual.Id;
                        caja.OperadorModificacionId = (Context.OperadorActual.Id);

                        //aca descontamos las señas en el caso de que se utilicen. 
                        var _seña = UsoDeSeña();
                        var _credito = UsoDeCredito();
                        var _egreso = UsoEgreso();
                       
                        //Desde aca Controlar
                        if (efectivo > 0 || (_seña+_credito+_egreso) >0)
                        {
                            CajaMovimiento cajaMovimiento = new CajaMovimiento();
                            cajaMovimiento.Id = Guid.NewGuid();
                            cajaMovimiento.CajaId = caja.Id;
                            
                            cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedores;

                            cajaMovimiento.ComprobanteId = compraNueva.Id;
                            cajaMovimiento.Importe = efectivo;
                            cajaMovimiento.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal;
                            cajaMovimiento.Efectivo = efectivo;

                            cajaMovimiento.Senia = _seña + _credito + _egreso ;
                            if (_seña > 0)
                            {
                               // cajaMovimiento.Senia = _seña;
                                _seña = 0;
                            }

                            if (_credito > 0)
                            {
                                //cajaMovimiento.Senia += _credito;
                                _credito = 0;
                            }

                            if (_egreso > 0)
                            {
                                //cajaMovimiento.Senia += _credito;
                                _egreso = 0;
                            }

                            cajaMovimiento.FechaAlta = _clock.Now;

                            cajaMovimiento.PcAlta = System.Environment.MachineName;
                            cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                            cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                            cajaMovimiento.TipoComprobante = TipoComprobanteEnum.FacCpraContado;
                            Uow.CajaMovimientos.Agregar(cajaMovimiento);
                        }

                        if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0)
                        {
                            CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento();
                            cajaMovimientoAnterior.Id = Guid.NewGuid();
                            cajaMovimientoAnterior.CajaId = caja.Id;

                            cajaMovimientoAnterior.TipoMovimientoCajaId =
                                TipoMovimientoCajaEnum.PagoProveedorCajaAnterior;
                            cajaMovimientoAnterior.ComprobanteId = compraNueva.Id;
                            cajaMovimientoAnterior.Importe = tarjeta+deposito+cheque+efectivoCajaAnterior+transferencia;
                            cajaMovimientoAnterior.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal;
                            cajaMovimientoAnterior.FechaAlta = _clock.Now;
                            cajaMovimientoAnterior.FechaModificacion = _clock.Now;
                            cajaMovimientoAnterior.PcAlta = System.Environment.MachineName;
                            cajaMovimientoAnterior.OperadorAltaId = Context.OperadorActual.Id;
                            cajaMovimientoAnterior.SucursalAltaId = Context.SucursalActual.Id;
                            cajaMovimientoAnterior.OperadorModificacionId = Context.OperadorActual.Id;
                            cajaMovimientoAnterior.SucursalModificacionId = Context.SucursalActual.Id;
                            cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.FacCpraContado;
                            cajaMovimientoAnterior.Efectivo = efectivoCajaAnterior;
                            cajaMovimientoAnterior.Tarjeta = tarjeta;
                            cajaMovimientoAnterior.Deposito = deposito;
                            cajaMovimientoAnterior.Cheque = cheque;
                            cajaMovimientoAnterior.Transferencia = transferencia;

                            cajaMovimientoAnterior.Senia = _seña + _credito + _egreso;
                          
                            //if (_seña > 0)
                            //{
                            //    cajaMovimientoAnterior.Senia = _seña;
                            //}

                          
                            Uow.CajaMovimientos.Agregar(cajaMovimientoAnterior);

                            //Guardamos el movimiento del depósito
                             foreach (var pago in ucTotalesCompraSeña1.Pagos)
                            {
                                switch (pago.TipoPago)
                                {
                                    case FormaPago.Cheque:
                                       // HACER ALGO
                                        break;

                                    case FormaPago.Deposito:
                                        var pagoDeposito = pago as VentaPagoDeposito;
                                        
                                        CuentasMovimiento cuentasMovimiento = new CuentasMovimiento();
                                        cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0;
                                        cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor
                                        cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha;
                                        cuentasMovimiento.EstadoMovimientoCuentaId = 0;
                                        cuentasMovimiento.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado;
                                        cuentasMovimiento.ComprobanteId = compraNueva.Id;
                                        cuentasMovimiento.MonedaId = 0;
                                        cuentasMovimiento.NroMovimiento = pagoDeposito.Numero;
                                        cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString();
                                        cuentasMovimiento.FechaCobro = _clock.Now;
                                        cuentasMovimiento.Debito = pago.Importe;
                                        cuentasMovimiento.Credito = 0;
                                        cuentasMovimiento.TipoCarga = 1;
                                        cuentasMovimiento.CajaId = caja.Id;
                                        cuentasMovimiento.FechaAlta = _clock.Now;
                                        cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                                        cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                                        Uow.CuentasMovimientos.Agregar(cuentasMovimiento);
                                        break;

                                    case FormaPago.Transferencia:
                                        var pagoTransferencia = pago as VentaPagoTransferencia;
                                        
                                        CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento();
                                        cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0;
                                        cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor
                                        cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha;
                                        cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0;
                                        cuentasMovimientoTransferecia.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado;
                                        cuentasMovimientoTransferecia.ComprobanteId = compraNueva.Id;
                                        cuentasMovimientoTransferecia.MonedaId = 0;
                                        cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero;
                                        cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA NRO " + pagoTransferencia.Numero.ToString();
                                        cuentasMovimientoTransferecia.FechaCobro = _clock.Now;
                                        cuentasMovimientoTransferecia.Debito = pago.Importe;
                                        cuentasMovimientoTransferecia.Credito = 0;
                                        cuentasMovimientoTransferecia.TipoCarga = 1;
                                        cuentasMovimientoTransferecia.CajaId = caja.Id;
                                        cuentasMovimientoTransferecia.FechaAlta = _clock.Now;
                                        cuentasMovimientoTransferecia.OperadorAltaId = Context.OperadorActual.Id;
                                        cuentasMovimientoTransferecia.SucursalAltaId = Context.SucursalActual.Id;

                                        Uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia);
                                        break;
                                }
                            }
                           
                        }
                        break;
                }
                Uow.Cajas.Modificar(caja);
            }
            #endregion

            #region "Guardar cuenta corriente"
            if (ucTipoCompra.TipoComprobanteSeleccionado == TipoComprobanteEnum.FacCpraCtaCte)
            {
                //aca descontamos las señas en el caso de que se utilicen. 
               var _seña =  UsoDeSeña();
               var _credito = UsoDeCredito();
                var _egreso = UsoEgreso();

               Caja caja = this.Context.CajaActual;

               CajaMovimiento cajaMovimiento = new CajaMovimiento();
               cajaMovimiento.Id = Guid.NewGuid();
               cajaMovimiento.CajaId = caja.Id;

               cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.PagoProveedores;
               cajaMovimiento.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado;
               cajaMovimiento.ComprobanteId = compraNueva.Id;

               cajaMovimiento.Senia = _seña + _credito + _egreso;
               cajaMovimiento.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal;

               //////////////////////////////////////////////////////////////////////////////
               if (efectivo > 0)
               {
                   cajaMovimiento.Importe = efectivo;
                   cajaMovimiento.Efectivo = efectivo;

                   cajaMovimiento.Senia = _seña + _credito + _egreso;
               }

                  if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0)
                        {
                            CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento();
                            cajaMovimientoAnterior.Id = Guid.NewGuid();
                            cajaMovimientoAnterior.CajaId = caja.Id;

                            cajaMovimientoAnterior.TipoMovimientoCajaId =
                                TipoMovimientoCajaEnum.PagoProveedorCajaAnterior;
                            cajaMovimientoAnterior.ComprobanteId = compraNueva.Id;
                            cajaMovimientoAnterior.Importe = tarjeta+deposito+cheque+efectivoCajaAnterior+transferencia;
                            cajaMovimientoAnterior.ImpFac = (decimal?)ucTotalesCompraSeña1.SubTotal;
                            cajaMovimientoAnterior.FechaAlta = _clock.Now;
                            cajaMovimientoAnterior.FechaModificacion = _clock.Now;
                            cajaMovimientoAnterior.PcAlta = System.Environment.MachineName;
                            cajaMovimientoAnterior.OperadorAltaId = Context.OperadorActual.Id;
                            cajaMovimientoAnterior.SucursalAltaId = Context.SucursalActual.Id;
                            cajaMovimientoAnterior.OperadorModificacionId = Context.OperadorActual.Id;
                            cajaMovimientoAnterior.SucursalModificacionId = Context.SucursalActual.Id;
                            cajaMovimientoAnterior.TipoComprobante = ucTipoCompra.TipoComprobanteSeleccionado; // TipoComprobanteEnum.FacCpraContado;
                            cajaMovimientoAnterior.Efectivo = efectivoCajaAnterior;
                            cajaMovimientoAnterior.Tarjeta = tarjeta;
                            cajaMovimientoAnterior.Deposito = deposito;
                            cajaMovimientoAnterior.Cheque = cheque;
                            cajaMovimientoAnterior.Transferencia = transferencia;

                            cajaMovimientoAnterior.Senia = _seña + _credito + _egreso;
                          
                            //if (_seña > 0)
                            //{
                            //    cajaMovimientoAnterior.Senia = _seña;
                            //}

                          
                            Uow.CajaMovimientos.Agregar(cajaMovimientoAnterior);

                            //Guardamos el movimiento del depósito
                             foreach (var pago in ucTotalesCompraSeña1.Pagos)
                            {
                                switch (pago.TipoPago)
                                {
                                    case FormaPago.Cheque:
                                       // HACER ALGO
                                        break;

                                    case FormaPago.Deposito:
                                        var pagoDeposito = pago as VentaPagoDeposito;
                                        
                                        CuentasMovimiento cuentasMovimiento = new CuentasMovimiento();
                                        cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0;
                                        cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor
                                        cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha;
                                        cuentasMovimiento.EstadoMovimientoCuentaId = 0;
                                        cuentasMovimiento.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado;
                                        cuentasMovimiento.ComprobanteId = compraNueva.Id;
                                        cuentasMovimiento.MonedaId = 0;
                                        cuentasMovimiento.NroMovimiento = pagoDeposito.Numero;
                                        cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString();
                                        cuentasMovimiento.FechaCobro = _clock.Now;
                                        cuentasMovimiento.Debito = pago.Importe;
                                        cuentasMovimiento.Credito = 0;
                                        cuentasMovimiento.TipoCarga = 1;
                                        cuentasMovimiento.CajaId = caja.Id;
                                        cuentasMovimiento.FechaAlta = _clock.Now;
                                        cuentasMovimiento.OperadorAltaId = Context.OperadorActual.Id;
                                        cuentasMovimiento.SucursalAltaId = Context.SucursalActual.Id;

                                        Uow.CuentasMovimientos.Agregar(cuentasMovimiento);
                                        break;

                                    case FormaPago.Transferencia:
                                        var pagoTransferencia = pago as VentaPagoTransferencia;
                                        
                                        CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento();
                                        cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0;
                                        cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor
                                        cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha;
                                        cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0;
                                        cuentasMovimientoTransferecia.TipoComprobanteId = ucTipoCompra.TipoComprobanteSeleccionado;
                                        cuentasMovimientoTransferecia.ComprobanteId = compraNueva.Id;
                                        cuentasMovimientoTransferecia.MonedaId = 0;
                                        cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero;
                                        cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA NRO " + pagoTransferencia.Numero.ToString();
                                        cuentasMovimientoTransferecia.FechaCobro = _clock.Now;
                                        cuentasMovimientoTransferecia.Debito = pago.Importe;
                                        cuentasMovimientoTransferecia.Credito = 0;
                                        cuentasMovimientoTransferecia.TipoCarga = 1;
                                        cuentasMovimientoTransferecia.CajaId = caja.Id;
                                        cuentasMovimientoTransferecia.FechaAlta = _clock.Now;
                                        cuentasMovimientoTransferecia.OperadorAltaId = Context.OperadorActual.Id;
                                        cuentasMovimientoTransferecia.SucursalAltaId = Context.SucursalActual.Id;

                                        Uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia);
                                        break;
                                }
                            }
                           
                        }

                //////////////////////////////////////////////////////////////////////////////

               cajaMovimiento.PcAlta = System.Environment.MachineName;
               cajaMovimiento.FechaAlta = _clock.Now;
               cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id;
               cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id;
               Uow.CajaMovimientos.Agregar(cajaMovimiento);
            }
            #endregion

            Uow.Commit();

            _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessCompraExitosa);

            OnCompraRealizada();
        }
Ejemplo n.º 5
0
        public void CrearSeniaProveedor(ProveedorSenia senia, IList<VentaPago> pagos, Caja caja, Guid operadorId, int sucursalId)
        {
            using (var uow = UowFactory.Create<ILaPazUow>())
            {
                decimal? efectivo = 0;
                decimal? efectivoCajaAnterior = 0;
                decimal? tarjeta = 0;
                decimal? cheque = 0;
                decimal? deposito = 0;
                decimal? transferencia = 0;

                foreach (var pago in pagos)
                {
                    switch (pago.TipoPago)
                    {
                        case FormaPago.Efectivo:
                            efectivo += pago.Importe;
                            break;

                        case FormaPago.EfectivoCajaAnterior:
                            efectivoCajaAnterior += pago.Importe;
                            break;

                        case FormaPago.Tarjeta:
                            tarjeta += pago.Importe;
                            break;

                        case FormaPago.Cheque:
                            cheque += pago.Importe;
                            break;

                        case FormaPago.Deposito:
                            deposito += pago.Importe;
                            break;

                        case FormaPago.Transferencia:
                            transferencia += pago.Importe;
                            break;
                    }
                }

                if (efectivo > 0)
                {
                    //creo la caja movimiento para los pagos en efectivo que tocan la caja actual
                    CajaMovimiento cajaMovimiento = new CajaMovimiento();

                    cajaMovimiento.Id = Guid.NewGuid();
                    cajaMovimiento.CajaId = caja.Id;
                    cajaMovimiento.TipoComprobante = TipoComprobanteEnum.SeñaProveedor;
                    cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.SeñaProveedor;

                    cajaMovimiento.ComprobanteId = senia.Id;
                    cajaMovimiento.Importe = efectivo;
                    cajaMovimiento.ImpFac = efectivo;
                    cajaMovimiento.FechaAlta = _clock.Now;
                    cajaMovimiento.FechaModificacion = _clock.Now;
                    cajaMovimiento.PcAlta = System.Environment.MachineName;
                    cajaMovimiento.OperadorAltaId = operadorId;
                    cajaMovimiento.SucursalAltaId = sucursalId;
                    cajaMovimiento.OperadorModificacionId = operadorId;
                    cajaMovimiento.SucursalModificacionId = sucursalId;

                    //descontar de la caja
                    if (caja.Egresos == null)
                        caja.Egresos = 0;

                    caja.Egresos += (float?)efectivo;

                    if (caja.Saldo == null)
                        caja.Saldo = 0;

                    caja.Saldo -= (float?)efectivo;

                    caja.FechaModificacion = _clock.Now;
                    caja.SucursalModificacionId = sucursalId;//Sucursal del operador
                    caja.OperadorModificacionId = (operadorId);//Id el operador

                    //traer la caja
                    if (cajaMovimiento.Efectivo == null)
                        cajaMovimiento.Efectivo = 0;

                    cajaMovimiento.Efectivo = efectivo;

                    uow.CajaMovimientos.Agregar(cajaMovimiento);
                }

                if (tarjeta > 0 || deposito > 0 || cheque > 0 || efectivoCajaAnterior > 0 || transferencia > 0)
                {
                    //creo la caja movimiento para los pagos en efectivo que tocan la caja actual
                    CajaMovimiento cajaMovimientoAnterior = new CajaMovimiento();

                    cajaMovimientoAnterior.Id = Guid.NewGuid();
                    cajaMovimientoAnterior.CajaId = caja.Id;
                    cajaMovimientoAnterior.TipoComprobante = TipoComprobanteEnum.SeñaProveedor;
                    cajaMovimientoAnterior.TipoMovimientoCajaId = TipoMovimientoCajaEnum.SeñaProveedorCajaAnterior;
                    cajaMovimientoAnterior.ComprobanteId = senia.Id;
                    cajaMovimientoAnterior.Importe = tarjeta + deposito + cheque + efectivoCajaAnterior + transferencia;
                    cajaMovimientoAnterior.ImpFac = tarjeta + deposito + cheque + efectivoCajaAnterior + transferencia;
                    cajaMovimientoAnterior.FechaAlta = _clock.Now;
                    cajaMovimientoAnterior.FechaModificacion = _clock.Now;
                    cajaMovimientoAnterior.PcAlta = System.Environment.MachineName;
                    cajaMovimientoAnterior.OperadorAltaId = operadorId;
                    cajaMovimientoAnterior.SucursalAltaId = sucursalId;
                    cajaMovimientoAnterior.OperadorModificacionId = operadorId;
                    cajaMovimientoAnterior.SucursalModificacionId = sucursalId;

                    if (efectivoCajaAnterior > 0)
                    {
                        if (cajaMovimientoAnterior.Efectivo == null)
                            cajaMovimientoAnterior.Efectivo = 0;

                        cajaMovimientoAnterior.Efectivo += efectivoCajaAnterior;

                        if (caja.Saldo == null)
                            caja.Saldo = 0;
                        caja.Saldo -= (float?)efectivo;
                    }

                    if (tarjeta > 0)
                    {
                        if (cajaMovimientoAnterior.Tarjeta == null)
                            cajaMovimientoAnterior.Tarjeta = 0;

                        cajaMovimientoAnterior.Tarjeta += tarjeta;
                    }

                    if (cheque > 0)
                    {
                        if (cajaMovimientoAnterior.Cheque == null)
                            cajaMovimientoAnterior.Cheque = 0;

                        cajaMovimientoAnterior.Cheque += cheque;
                    }

                    if (deposito > 0)
                    {
                        if (cajaMovimientoAnterior.Deposito == null)
                            cajaMovimientoAnterior.Deposito = 0;

                        cajaMovimientoAnterior.Deposito += deposito;
                    }

                    if (transferencia > 0)
                    {
                        if (cajaMovimientoAnterior.Transferencia == null)
                            cajaMovimientoAnterior.Transferencia = 0;

                        cajaMovimientoAnterior.Transferencia += transferencia;
                    }

                    uow.CajaMovimientos.Agregar(cajaMovimientoAnterior);
                }

                //Guardamos el movimiento del depósito
                foreach (var pago in pagos)
                {
                    switch (pago.TipoPago)
                    {
                        case FormaPago.Cheque:
                            // HACER ALGO
                            break;

                        case FormaPago.Deposito:
                            var pagoDeposito = pago as VentaPagoDeposito;

                            CuentasMovimiento cuentasMovimiento = new CuentasMovimiento();
                            cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0;
                            cuentasMovimiento.TipoMovimientoId = 1;//Deposito a proveedor
                            cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha;
                            cuentasMovimiento.EstadoMovimientoCuentaId = 0;
                            cuentasMovimiento.TipoComprobanteId = TipoComprobanteEnum.SeñaProveedor;
                            cuentasMovimiento.ComprobanteId = senia.Id;
                            cuentasMovimiento.MonedaId = 0;
                            cuentasMovimiento.NroMovimiento = pagoDeposito.Numero;
                            cuentasMovimiento.Descripcion = "DEPOSITO SEÑA NRO " + pagoDeposito.Numero.ToString();
                            cuentasMovimiento.FechaCobro = _clock.Now;
                            cuentasMovimiento.Debito = pago.Importe;
                            cuentasMovimiento.Credito = 0;
                            cuentasMovimiento.TipoCarga = 1;
                            cuentasMovimiento.CajaId = caja.Id;
                            cuentasMovimiento.FechaAlta = _clock.Now;
                            cuentasMovimiento.OperadorAltaId = operadorId;
                            cuentasMovimiento.SucursalAltaId = sucursalId;

                            uow.CuentasMovimientos.Agregar(cuentasMovimiento);
                            break;

                        case FormaPago.Transferencia:
                            var pagoTransferencia = pago as VentaPagoTransferencia;

                            CuentasMovimiento cuentasMovimientoTransferecia = new CuentasMovimiento();
                            cuentasMovimientoTransferecia.CuentaId = pagoTransferencia.CuentaId ?? 0;
                            cuentasMovimientoTransferecia.TipoMovimientoId = 1;//Deposito a proveedor
                            cuentasMovimientoTransferecia.FechaMovimiento = pagoTransferencia.Fecha;
                            cuentasMovimientoTransferecia.EstadoMovimientoCuentaId = 0;
                            cuentasMovimientoTransferecia.TipoComprobanteId = TipoComprobanteEnum.SeñaProveedor;
                            cuentasMovimientoTransferecia.ComprobanteId = senia.Id;
                            cuentasMovimientoTransferecia.MonedaId = 0;
                            cuentasMovimientoTransferecia.NroMovimiento = pagoTransferencia.Numero;
                            cuentasMovimientoTransferecia.Descripcion = "TRANSFERENCIA SEÑA NRO " + pagoTransferencia.Numero.ToString();
                            cuentasMovimientoTransferecia.FechaCobro = _clock.Now;
                            cuentasMovimientoTransferecia.Debito = pago.Importe;
                            cuentasMovimientoTransferecia.Credito = 0;
                            cuentasMovimientoTransferecia.TipoCarga = 1;
                            cuentasMovimientoTransferecia.CajaId = caja.Id;
                            cuentasMovimientoTransferecia.FechaAlta = _clock.Now;
                            cuentasMovimientoTransferecia.OperadorAltaId = operadorId;
                            cuentasMovimientoTransferecia.SucursalAltaId = sucursalId;

                            uow.CuentasMovimientos.Agregar(cuentasMovimientoTransferecia);
                            break;
                    }
                }

                uow.Cajas.Modificar(caja);

                uow.ProveedoresSenias.Agregar(senia);

                uow.Commit();
            }
        }
Ejemplo n.º 6
0
        private void ProcesarPagoDeposito(VentaDataBase ventaData, VentaPago pago, CajaMovimiento cajaMovimiento, Venta venta, Caja caja)
        {
            var pagoDeposito = pago as VentaPagoDeposito;
            if (cajaMovimiento.Deposito == null)
                cajaMovimiento.Deposito = 0;

            //Guardar Cuentas Movimientos
            cajaMovimiento.Deposito += pago.Importe;

            CuentasMovimiento cuentasMovimiento = new CuentasMovimiento();
            cuentasMovimiento.CuentaId = pagoDeposito.CuentaId ?? 0;
            cuentasMovimiento.TipoMovimientoId = 2; //Deposito
            cuentasMovimiento.FechaMovimiento = pagoDeposito.Fecha;
            cuentasMovimiento.EstadoMovimientoCuentaId = 0;
            cuentasMovimiento.TipoComprobanteId = ventaData.TipoComprobanteSeleccionado;
            cuentasMovimiento.ComprobanteId = venta.Id;
            cuentasMovimiento.MonedaId = 0;
            cuentasMovimiento.CondicionVentaId = ventaData.CondicionVentaSeleccionada;
            cuentasMovimiento.NroMovimiento = pagoDeposito.Numero;
            cuentasMovimiento.Descripcion = "DEPOSITO NRO " + pagoDeposito.Numero.ToString();
            cuentasMovimiento.FechaCobro = _clock.Now;
            cuentasMovimiento.Debito = 0;
            cuentasMovimiento.Credito = pago.Importe;
            cuentasMovimiento.TipoCarga = 2;
            cuentasMovimiento.CajaId = caja.Id;
            cuentasMovimiento.FechaAlta = _clock.Now;
            cuentasMovimiento.OperadorAltaId = ventaData.OperadorId;
            cuentasMovimiento.SucursalAltaId = ventaData.SucursalId;

            Uow.CuentasMovimientos.Agregar(cuentasMovimiento);
        }