コード例 #1
0
 private void OnSeleccionarProveedorFinished(ProveedoresCuentasCorriente proveedor)
 {
     if (SeleccionarFinished != null)
     {
         SeleccionarFinished(this, proveedor);
     }
 }
コード例 #2
0
 private void SeleccionarProveedorCtaCte()
 {
     var proveedorCtaCte = Uow.ProveedoresCuentasCorrientes.Obtener(p => p.Id == (Guid)Combo.SelectedValue, p=>p.Proveedor);
     _proveedorCtaCte = proveedorCtaCte;
     OnSeleccionarProveedorFinished(proveedorCtaCte);
 }
コード例 #3
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();
        }