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); } }
public Task Update(ComprobanteDTO obj) { throw new NotImplementedException(); }
public Task Insert(ComprobanteDTO obj) { throw new NotImplementedException(); }
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(); }