예제 #1
0
        private void ProcesarPagoTarjeta(VentaDataBase ventaData, VentaPago pago, CajaMovimiento cajaMovimiento)
        {
            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   = ventaData.SucursalId;
            tarjetasMovimiento.OperadorAltaId   = ventaData.OperadorId;

            Uow.TarjetasMovimientos.Agregar(tarjetasMovimiento);
        }
예제 #2
0
        private void ActualizarTitulosConsignaciones(VentaDataBase ventaData, Guid tituloId, Guid?proveedorId, int?cantconsiganda)
        {
            //Busco las consignaciones de titulos y actualizo la columna CnVn
            var titulosConsignaciones =
                Uow.TitulosConsignaciones.Listado().Where(
                    tc => tc.TituloId == tituloId && tc.ProveedorId == proveedorId && (tc.CntVn + tc.CntDev) < tc.CntCn && tc.SucursalAltaId == ventaData.SucursalId).
                OrderBy(tc => tc.FechaAlta);

            foreach (TitulosConsignacion tituloConsignacion in titulosConsignaciones)
            {
                if (cantconsiganda > 0)
                {
                    if (tituloConsignacion.CntCn - tituloConsignacion.CntVn - tituloConsignacion.CntDev >= cantconsiganda)
                    {
                        tituloConsignacion.CntVn += cantconsiganda ?? 0;
                        cantconsiganda            = 0;
                    }
                    else
                    {
                        var disponible = tituloConsignacion.CntCn - tituloConsignacion.CntVn - tituloConsignacion.CntDev;
                        cantconsiganda          -= disponible;
                        tituloConsignacion.CntVn = tituloConsignacion.CntCn;
                    }

                    tituloConsignacion.FechaModificacion      = _clock.Now;
                    tituloConsignacion.OperadorModificacionId = ventaData.OperadorId;
                    tituloConsignacion.SucursalModificacionId = ventaData.SucursalId;

                    Uow.TitulosConsignaciones.Modificar(tituloConsignacion);
                }
            }
        }
예제 #3
0
        private CajaMovimiento CrearCajaMovimiento(VentaDataBase ventaData, Caja caja, Venta venta)
        {
            CajaMovimiento cajaMovimiento = new CajaMovimiento();

            cajaMovimiento.Id     = Guid.NewGuid();
            cajaMovimiento.CajaId = caja.Id;
            cajaMovimiento.TipoMovimientoCajaId = ventaData.TipoCajaMovimientoSeleccionado;
            cajaMovimiento.TipoComprobante      = ventaData.TipoComprobanteSeleccionado;
            cajaMovimiento.ComprobanteId        = venta.Id;
            cajaMovimiento.Senia = ventaData.Senas + ventaData.CreditosDevolucion;
            if (ventaData.CondicionVentaSeleccionada == CondicionVentaEnum.CuentaCorriente)
            {
                cajaMovimiento.Importe = ventaData.Anticipo;
            }
            else
            {
                cajaMovimiento.Importe = ventaData.TotalPagar;
            }

            cajaMovimiento.ImpFac = ventaData.SubTotal;

            //if (ventaData.CondicionVentaSeleccionada == CondicionVentaEnum.CuentaCorriente)
            //    cajaMovimiento.ImpFac = ventaData.SubTotal;
            //else
            //    cajaMovimiento.ImpFac = ventaData.TotalPagar;


            cajaMovimiento.PcAlta         = ventaData.PcAlta;
            cajaMovimiento.SucursalAltaId = ventaData.SucursalId;
            cajaMovimiento.OperadorAltaId = ventaData.OperadorId;
            cajaMovimiento.FechaAlta      = _clock.Now;

            return(cajaMovimiento);
        }
예제 #4
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);
        }
예제 #5
0
        private void ProcesarPagoCheque(VentaDataBase ventaData, VentaPago pago, CajaMovimiento cajaMovimiento)
        {
            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.EstadoChequeId   = 0;
            chequesTercero.SucursalAltaId   = ventaData.SucursalId;
            chequesTercero.OperadorAltaId   = ventaData.OperadorId;

            Uow.ChequesTerceros.Agregar(chequesTercero);
        }
예제 #6
0
        private void ActualizarSeniasCliente(VentaDataBase ventaData, CrearVentaResponse reponse)
        {
            //Actulizar señas de cliente
            var monto = ventaData.Senas;
            var clientesMontosFavor = Uow.ClientesMontosFavor.Listado().Where((cm => cm.ClienteId == ventaData.ClienteId
                                                                               &&
                                                                               cm.TipoComprobanteId ==
                                                                               TipoComprobanteEnum.SeñaCliente &&
                                                                               cm.SucursalAltaId == ventaData.SucursalId &&
                                                                               !cm.FechaAnulacion.HasValue &&
                                                                               cm.ImpOcupado < cm.Importe))
                                      .OrderBy(cmf => cmf.FechaAlta)
                                      .ToList();


            foreach (ClienteMontoFavor clienteMontoFavor in clientesMontosFavor)
            {
                if (monto != null)
                {
                    if (monto > 0)
                    {
                        if ((clienteMontoFavor.Importe - clienteMontoFavor.ImpOcupado) >= monto)
                        {
                            clienteMontoFavor.ImpOcupado += monto;
                            monto = 0;
                        }
                        else
                        {
                            monto -= (clienteMontoFavor.Importe - clienteMontoFavor.ImpOcupado);
                            clienteMontoFavor.ImpOcupado = clienteMontoFavor.Importe;
                        }

                        clienteMontoFavor.FechaModificacion      = _clock.Now;
                        clienteMontoFavor.OperadorModificacionId = ventaData.OperadorId;
                        clienteMontoFavor.SucursalAltaId         = ventaData.SucursalId;

                        Uow.ClientesMontosFavor.Modificar(clienteMontoFavor);

                        if (clienteMontoFavor.Importe != clienteMontoFavor.ImpOcupado)
                        {
                            reponse.Comprobantes.Add(new ComprobanteVenta()
                            {
                                Concepto   = "Actualización de seña",
                                LCN        = clienteMontoFavor.LCN,
                                Importe    = clienteMontoFavor.Importe,
                                ImpOcupado = clienteMontoFavor.ImpOcupado
                            });
                        }
                    }
                }
            }
        }
예제 #7
0
        private void ActualizarVentaReservada(VentaDataBase ventaData)
        {
            var lcn = LcnHelper.ObtenerLcn(ventaData.NumeroComprobante.GetValueOrDefault(), ventaData.PuntoVenta);

            //var ventaReservada = Uow.VentasReservadas.Obtener(v => v.LCN == lcn);
            var ventaReservada = Uow.VentasReservadas.Listado().OrderByDescending(v => v.FechaAlta).FirstOrDefault(v => v.LCN == lcn);

            if (ventaReservada != null)
            {
                ventaReservada.FechaModificacion      = _clock.Now;
                ventaReservada.OperadorModificacionId = ventaData.OperadorId;
                ventaReservada.SucursalModificacionId = ventaData.SucursalId;
                Uow.VentasReservadas.Modificar(ventaReservada);
            }
        }
예제 #8
0
        private void AgregarClienteMovimiento(VentaDataBase ventaData, Venta venta)
        {
            //ClienteMovimiento
            ClientesMovimiento clientesMovimiento = new ClientesMovimiento();

            clientesMovimiento.IdCliente         = ventaData.ClienteId;
            clientesMovimiento.IdTipoComprobante = (int?)ventaData.TipoComprobanteSeleccionado;
            clientesMovimiento.IdComprobante     = venta.Id;
            clientesMovimiento.Concepto          = ventaData.TipoComprobanteSeleccionado.ToString();
            clientesMovimiento.Haber             = ventaData.TotalPagar;
            clientesMovimiento.FechaGeneracion   = _clock.Now;
            clientesMovimiento.FechaAlta         = _clock.Now;
            clientesMovimiento.SucursalAltaId    = ventaData.SucursalId;
            clientesMovimiento.OperadorAltaId    = ventaData.OperadorId;

            Uow.ClientesMovimientos.Agregar(clientesMovimiento);
        }
예제 #9
0
        private Venta AgregarVenta(VentaDataBase ventaData)
        {
            var venta = new Venta();

            venta.Id = Guid.NewGuid();

            if (!ventaData.EsVentaReservada)
            {
                venta.NumeroComprobante = this.SiguienteNumeroFactura(ventaData.OperadorId, ventaData.SucursalId);
            }
            else
            {
                venta.NumeroComprobante = ventaData.NumeroComprobante.GetValueOrDefault();

                ActualizarVentaReservada(ventaData);
            }

            venta.LetraComprobante = LcnHelper.LetraConsumidorFinal;
            venta.LCN           = LcnHelper.ObtenerLcn(venta.NumeroComprobante, ventaData.PuntoVenta);
            venta.ComprobanteId = ventaData.TipoComprobanteSeleccionado;
            venta.ClienteId     = ventaData.ClienteId;

            venta.PuntoVenta       = ventaData.PuntoVenta;
            venta.FechaComprobante = _clock.Now;
            venta.FechaVencimiento = _clock.Now;
            venta.CondicionVentaId = ventaData.CondicionVentaSeleccionada;

            venta.Concepto    = ventaData.TipoComprobanteSeleccionado.ToString();
            venta.ImporteNeto = ventaData.TotalPagar.GetValueOrDefault();
            venta.ImporteIva  = ImporteIva;

            venta.ImporteSena     = ventaData.Senas + ventaData.CreditosDevolucion;
            venta.FechaUltimoPago = _clock.Now;
            venta.TotalPagado     = ventaData.TotalPagar;
            venta.EstadoVentaId   = EstadoVentaEnum.Entregada;

            venta.FechaAlta      = _clock.Now;
            venta.SucursalAltaId = ventaData.SucursalId;
            venta.OperadorAltaId = ventaData.OperadorId;

            Uow.Ventas.Agregar(venta);

            return(venta);
        }
예제 #10
0
        private void AgregarTitulosConsignacionVendida(VentaDataBase ventaData, Guid tituloId, Guid?proveedorId, Venta venta, int?cantconsiganda)
        {
            TitulosConsignacionesVendida titulosConsignacionesVendida = new TitulosConsignacionesVendida();

            titulosConsignacionesVendida.Id             = Guid.NewGuid();
            titulosConsignacionesVendida.nTipo          = 1;
            titulosConsignacionesVendida.ClienteId      = Guid.Empty;
            titulosConsignacionesVendida.ProveedorId    = proveedorId;
            titulosConsignacionesVendida.TituloId       = tituloId;
            titulosConsignacionesVendida.ComprobanteId  = venta.Id;
            titulosConsignacionesVendida.Fecha          = _clock.Now;
            titulosConsignacionesVendida.CntCn          = cantconsiganda; // titulo.CantidadConsignada;
            titulosConsignacionesVendida.CntPag         = 0;
            titulosConsignacionesVendida.FechaAlta      = _clock.Now;
            titulosConsignacionesVendida.OperadorAltaId = ventaData.OperadorId;
            titulosConsignacionesVendida.SucursalAltaId = ventaData.SucursalId;

            Uow.TitulosConsignacionesVendidas.Agregar(titulosConsignacionesVendida);
        }
예제 #11
0
        private Caja ActualizarCajaActual(VentaDataBase ventaData, Venta venta)
        {
            Caja caja = Uow.Cajas.Obtener(c => c.Id == ventaData.CajaActualId);

            if (caja.Ingresos == null)
            {
                caja.Ingresos = 0;
            }
            caja.Ingresos += (float?)venta.TotalPagado;
            if (caja.Saldo == null)
            {
                caja.Saldo = 0;
            }
            caja.Saldo                 += (float?)venta.TotalPagado;
            caja.FechaModificacion      = _clock.Now;
            caja.SucursalModificacionId = ventaData.SucursalId;
            caja.OperadorModificacionId = ventaData.OperadorId;

            Uow.Cajas.Modificar(caja);
            return(caja);
        }
예제 #12
0
        private void ProcesarPagoCuentaCorriente(VentaDataBase ventaData, CrearVentaResponse reponse, Venta venta)
        {
            var cuotas = ventaData.Cuotas;

            reponse.FacturaInfo.Descripcion += "Cuotas: " + cuotas + " de: $" + ventaData.Montocuota.ToString();
            for (int i = 1; i <= cuotas; i++)
            {
                ClienteCuentaCorriente clienteCuentaCorriente = new ClienteCuentaCorriente();
                clienteCuentaCorriente.Id        = Guid.NewGuid();
                clienteCuentaCorriente.VentaId   = venta.Id;
                clienteCuentaCorriente.ClienteId = ventaData.ClienteId;
                clienteCuentaCorriente.Cuota     = (byte)i;
                clienteCuentaCorriente.Fecha     = _clock.Now;
                DateTime venc = ventaData.VencimientoCuota;
                clienteCuentaCorriente.FechaVencimiento = venc.AddMonths(i - 1);
                clienteCuentaCorriente.Importe          = ventaData.Montocuota;
                clienteCuentaCorriente.Pagado           = 0;
                clienteCuentaCorriente.FechaGeneracion  = _clock.Now;
                clienteCuentaCorriente.FechaAlta        = _clock.Now;
                clienteCuentaCorriente.SucursalAltaId   = ventaData.SucursalId;
                clienteCuentaCorriente.OperadorAltaId   = ventaData.OperadorId;
                Uow.ClientesCuentasCorrientes.Agregar(clienteCuentaCorriente);
            }
        }