示例#1
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);
        }
示例#2
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;
        }
示例#3
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);
                }
            }
        }
示例#4
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);
        }
示例#5
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;
        }
示例#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);
        }
示例#7
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);
        }
示例#8
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);
     }
 }
示例#9
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);
        }
示例#10
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
                            });
                        }
                    }
                }
            }
        }
示例#11
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;
        }
示例#12
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);
            }
        }