public long GenerarComprobanteDelivery(ComprobanteDTO dto)
        {
            using (var context = new ModeloXCommerceContainer())
            {
                var nuevoComprobante = new ComprobanteDelivery
                {
                    ClienteId           = dto.ClienteId,
                    Descuento           = dto.Descuento,
                    Fecha               = dto.Fecha,
                    Numero              = 0,
                    SubTotal            = dto.SubTotal,
                    Total               = dto.Total,
                    TipoComprobante     = TipoComprobante.A,
                    UsuarioId           = dto.UsuarioId,
                    DetalleComprobantes = new List <DetalleComprobante>()
                };

                context.Comprobantes.Add(nuevoComprobante);

                var list = new List <DetalleComprobante>();
                foreach (var it in dto.Items)
                {
                    var detalle = new DetalleComprobante
                    {
                        ComprobanteId  = nuevoComprobante.Id,
                        SubTotal       = it.SubtotalLinea,
                        Codigo         = it.CodigoProducto,
                        Cantidad       = it.CantidadProducto,
                        PrecioUnitario = it.PrecioUnitario,
                        Descripcion    = it.DescripcionProducto,
                        ArticuloId     = it.ProductoId
                    };
                    list.Add(detalle);
                    context.DetalleComprobantes.Add(detalle);
                }
                nuevoComprobante.DetalleComprobantes = list;
                context.SaveChanges();

                return(nuevoComprobante.Id);
            }
        }
Пример #2
0
 public Task Update(ComprobanteDTO obj)
 {
     throw new NotImplementedException();
 }
Пример #3
0
 public Task Insert(ComprobanteDTO obj)
 {
     throw new NotImplementedException();
 }
Пример #4
0
        private long?Facturar()
        {
            if (!VerificarDatosObligatorios())
            {
                MessageBox.Show("Error, complete los datos", "Error");
                return(null);
            }

            if (rbCtaCte.Checked)
            {
                bool puede_continuar = _clienteServicio.DescontarDeCuenta(idCliente, nudTotal.Value);
                if (!puede_continuar)
                {
                    MessageBox.Show("La cuenta del cliente no tiene suficiente saldo", "Adverencia");
                    return(null);
                }
            }

            /////////////////
            ///COMPROBANTE///
            /////////////////
            ComprobanteDTO comprobante = new ComprobanteDTO
            {
                Fecha     = DateTime.Now,
                UsuarioId = DatosSistema.UsuarioId,
                ClienteId = rbCtaCte.Checked ? idCliente : consumidorFinalId,
                Descuento = nudDescuento.Value,
                Items     = detalles.Values.ToList()
            };

            long comprobante_id;

            if (delivery)
            {
                comprobante_id = _comprobanteServicio.GenerarComprobanteDelivery(comprobante);
            }
            else
            {
                comprobante_id = _comprobanteServicio.Generar(comprobante);
            }

            ////////////////
            //Detalle Caja//
            ////////////////
            var formaDePago = TipoPago.Efectivo;

            if (rbCtaCte.Checked)
            {
                formaDePago = TipoPago.CtaCte;
            }
            if (rbTarjeta.Checked)
            {
                formaDePago = TipoPago.Tarjeta;
            }
            //Tipo pago propiedad de detalle caja no tiene cheque
            //asi que si es cheque no generamos detalle caja
            if (!rbCheque.Checked)
            {
                DetalleCajaDTO detalleCaja = new DetalleCajaDTO
                {
                    CajaId   = DatosSistema.CajaId,
                    Monto    = comprobante.Total,
                    TipoPago = formaDePago
                };
                _detalleCajaServicio.Generar(detalleCaja);
            }

            ////////////////
            ///FORMA PAGO///
            ////////////////

            if (rbEfectivo.Checked)
            {
                FormaPagoEfectivoDTO fp = new FormaPagoEfectivoDTO
                {
                    TipoFormaPago = TipoFormaPago.Efectivo,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                };
                _formaPagoServicio.Generar(fp);
            }

            if (rbCtaCte.Checked)
            {
                //parte descontar cuenta ya está al principio
                FormaPagoCtaCteDTO fp = new FormaPagoCtaCteDTO
                {
                    TipoFormaPago = TipoFormaPago.CuentaCorriente,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                    ClienteId     = idCliente,
                };
                _formaPagoServicio.Generar(fp);
            }

            if (rbCheque.Checked)
            {
                FormaPagoChequeDTO fp = new FormaPagoChequeDTO
                {
                    TipoFormaPago = TipoFormaPago.Cheque,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                    BancoId       = ((BancoDTO)cbBanco.SelectedItem).Id,
                    Dias          = (int)nudDiasCheque.Value,
                    EnteEmisor    = txtEnteCheque.Text,
                    FechaEmision  = dtFechaCheque.Value,
                    Numero        = txtNumeroCheque.Text,
                };

                _formaPagoServicio.Generar(fp);
            }

            if (rbTarjeta.Checked)
            {
                FormaPagoTarjetaDTO fp = new FormaPagoTarjetaDTO
                {
                    TipoFormaPago = TipoFormaPago.Tarjeta,
                    Monto         = nudTotal.Value,
                    ComprobanteId = comprobante_id,
                    Numero        = txtNumeroTarjeta.Text,
                    Cupon         = "", //TODO ????
                    PlanTarjetaId = ((PlanTarjetaDTO)cbPlan.SelectedItem).Id,
                    NumeroTarjeta = txtClaveTarjeta.Text
                };

                _formaPagoServicio.Generar(fp);
            }

            //////////////
            //Movimiento//
            //////////////
            MovimientoDTO movimiento = new MovimientoDTO
            {
                CajaID        = DatosSistema.CajaId,
                ComprobanteID = comprobante_id,
                Tipo          = TipoMovimiento.Ingreso,
                UsuarioID     = DatosSistema.UsuarioId,
                Monto         = comprobante.Total,
                Fecha         = DateTime.Now,
            };

            _movimientoServicio.GenerarMovimiento(movimiento);

            foreach (var d in detalles)
            {
                //todo:producto tendria que tener si descuenta stock o no...
                _articuloServicio.DescontarStock(d.Value.ProductoId, d.Value.CantidadProducto);
            }

            MessageBox.Show("Factura exitosa.", delivery ? "Delivery" : "Kiosco");

            return((long?)comprobante_id);
            //Close();
        }