public FrmRendirConsignacionCliente(IClock clock,
                             IFormFactory formFactory,
                             IMessageBoxDisplayService messageBoxDisplayService,
                             ILaPazUow uow,
                             IVentaNegocio ventaNegocio,
                             IClienteNegocio clienteNegocio,
                             IRemitosVentaDetalleNegocio remitoDetalleNegocio,
                             IRemitosVentaNegocio remitoNegocio,
                             IFormRegistry formRegistry, int id, ActionFormMode mode)
        {
            FormFactory = formFactory;
            Uow = uow;
            FormRegistry = formRegistry;

            _clock = clock;
            _messageBoxDisplayService = messageBoxDisplayService;
            _ventaNegocio = ventaNegocio;
            _clienteNegocio = clienteNegocio;
            _remitoDetalleNegocio = remitoDetalleNegocio;
            _remitoNegocio = remitoNegocio;

            _venta = new Venta();
            _id = id;
            _formMode = mode;

            InitializeComponent();
            InicializarForm(mode);
        }
        private void UcBuscadorFacturaOnBuscarFinished(object sender, List<VentaDetalleDto> ventaDetalles)
        {
            if (ventaDetalles != null)
            {
                _ventaDetalleDto = ventaDetalles;
                var ventaId = ventaDetalles.First().VentaId;
                _venta = Uow.Ventas.Obtener(v => v.Id == ventaId, v => v.Cliente);

                ActualizarDetalleFactura(ventaDetalles);
                CargarDatosFactura();
            }
            else
            {
                Limpiar();
                _messageBoxDisplayService.ShowSuccess("No se encontró factura con ese número");
            }

        }
예제 #3
0
        private void CargarDetalle(Venta venta)
        {
            _descripcion = string.Empty;
            _formaPago = string.Empty;
            //_recargo = venta.Recargo;

            var cajaMovimiento = Uow.CajaMovimientos.Obtener(cm => cm.ComprobanteId == venta.Id);
            if (cajaMovimiento != null)
            {
                if (cajaMovimiento.Senia.HasValue)
                {
                    _descripcion += "Seña  $" + cajaMovimiento.Senia + ". ";
                }

                if (cajaMovimiento.Efectivo.HasValue)
                {
                    _formaPago += "Efectivo $" + cajaMovimiento.Efectivo + ". ";
                }

                if (cajaMovimiento.Tarjeta.HasValue)
                {
                    var tarjetasMovimientos =
                        Uow.TarjetasMovimientos.Listado(tm => tm.Tarjeta).Where(tm => tm.CajaMovimientoId == cajaMovimiento.Id).ToList();

                    foreach (var tarjetasMovimiento in tarjetasMovimientos)
                    {
                        _formaPago += "Tarjeta " + tarjetasMovimiento.Tarjeta.Nombre + " $" + tarjetasMovimiento.Importe + ". ";
                    }
                }

                if (cajaMovimiento.Cheque.HasValue)
                {
                    var chequesTerceros =
                        Uow.ChequesTercero.Listado(ch => ch.Banco).Where(ch => ch.CajaMovimientoId == cajaMovimiento.Id);

                    foreach (var chequeTercero in chequesTerceros)
                    {
                        _formaPago += "Cheque " + chequeTercero.Banco.Nombre + " $" + chequeTercero.Importe + ". ";
                    }
                }

                if (cajaMovimiento.Deposito.HasValue)
                {
                    var cuentasMovimientos =
                        Uow.CuentasMovimientos.Listado(ch => ch.Cuenta).Where(ch => ch.ComprobanteId == venta.Id);

                    foreach (var cuentasMovimiento in cuentasMovimientos)
                    {
                        _formaPago += "Deposito " + cuentasMovimiento.Cuenta.Nombre + " $" + cuentasMovimiento.Credito + ". ";
                    }
                }
            }

            var cuotas = Uow.ClientesCuentasCorrientes.Listado().Where(cc => cc.VentaId == venta.Id).ToList();

            if (cuotas.Any())
            {
                var cantidadCuotas = cuotas.Count;
                var montoCuotas = cuotas.First().Importe;

                _descripcion += "Cuotas: " + cantidadCuotas + " de: $" + montoCuotas;
            }

            if (venta.CondicionVentaId == CondicionVentaEnum.CuentaCorriente && cajaMovimiento != null)
            {
                //Si es anticipo va adelante de todo.
                _descripcion = "Anticipo $" + cajaMovimiento.Importe + ". " + _descripcion;
            }
        }
예제 #4
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);
        }
예제 #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 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;
        }
예제 #7
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);
        }
예제 #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 AgregarVentaDetalle(Venta venta, int sucursalId, Guid operadorId, Guid tituloId, int? cantidad, decimal? subTotal,
                                         decimal? precioBase, int? descuento, int? cantpropia, int? cantconsiganda)
        {
            VentaDetalle ventaDetalle = new VentaDetalle();

            ventaDetalle.Id = Guid.NewGuid();
            ventaDetalle.VentaId = venta.Id;
            ventaDetalle.TituloId = tituloId;
            ventaDetalle.CantidadPropia = cantpropia;
            ventaDetalle.CantidadConsig = cantconsiganda;
            ventaDetalle.Precio = subTotal;
            ventaDetalle.CantidadAuditada = cantidad;
            ventaDetalle.PrecioBase = precioBase;
            ventaDetalle.Descuento = descuento;
            ventaDetalle.FechaAlta = _clock.Now;
            ventaDetalle.SucursalAltaId = sucursalId;
            ventaDetalle.OperadorAltaId = operadorId;

            Uow.VentasDetalle.Agregar(ventaDetalle);
        }
예제 #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;
        }