private void BtnCobrar_Click(object sender, EventArgs e) { if (dgvGrilla.DataSource == null) { MessageBox.Show(@"No hay Productos Cargados.", @"Atención", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if ((TipoFormaPago)cmbFormaPago.SelectedItem == TipoFormaPago.Efectivo) { var ultimoComprobante = _comprobanteKioskoServicio.UltimoComprobanteId(); var caja = _cajaServicio.Obtener(CajaAbiertaId).Id; var ClienteId = _clienteServicio.ObtenerPorDni(txtClienteDni.Text).Id; var fecha = dtpFecha.Value; var comprobante = new ComprobanteKioskoDto { Numero = (int)ultimoComprobante, Fecha = fecha, SubTotal = nudSubTotal.Value, Descuento = nudDescuento.Value, Total = nudTotal.Value, UsuarioId = (long)UsuarioLogueadoId, ClienteId = ClienteId, TipoComprobante = (TipoComprobante)cmbTipoComprobante.SelectedItem, Items = _listaDetalles }; _comprobanteKioskoServicio.GenerarComprobante(comprobante, caja); var traerComprobante = _comprobanteKioskoServicio.traerComprobantePorNumero(comprobante.Numero); var nuevoMovimiento = new MovimientoDto { CajaId = caja, ComprobanteId = traerComprobante.Id, TipoMovimiento = TipoMovimiento.Ingreso, UsuarioId = UsuarioLogueadoId, Monto = nudTotal.Value, Fecha = dtpFecha.Value, Descripcion = "FAC_" + cmbTipoComprobante.Text + "_" + $"{_comprobanteKioskoServicio.UltimoComprobanteId()}" + "_" + DateTime.Now.ToShortDateString().Replace("/", string.Empty) + "_KIOSCO" }; _movimientoServicio.Insertar(nuevoMovimiento); _cajaServicio.RealizarMovimiento(nuevoMovimiento); foreach (var items in _comprobanteKioskoDto.Items) { //descontar stock _articuloServicio.DescontarStock(items.ProductoId, items.Cantidad); } MessageBox.Show("Facturacion Realizada Correctamente", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information); LimpiarFormulario(); } }
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(); }