void RetornaDatosPagos(BO.DAL.dsDatos.DatosPagoDataTable DatosPago, ref BO.DAL.dsDatos.DatosPagoDataTable newDatosPago, decimal dMonto, ref decimal dMontoEfectvo, ref decimal dMontoOtros) { decimal dMontoRestante = 0; foreach (BO.DAL.dsDatos.DatosPagoRow dr in DatosPago.OrderBy(p => p.TipoPago)) { /*Pago Efect*/ if (dr.TipoPago == -1) { if (dr.MontoEfectivo >= dMonto) { dMontoEfectvo = dMonto; BO.DAL.dsDatos.DatosPagoRow oNewRow = newDatosPago.NewDatosPagoRow(); oNewRow.MontoEfectivo = dMonto; oNewRow.Importe = dMonto; oNewRow.Numero = dr.Numero; oNewRow.TipoPago = dr.TipoPago; oNewRow.TipoPagoDesc = dr.TipoPagoDesc; oNewRow.Fecha = dr.Fecha; oNewRow.Devolucion = 0; oNewRow.Banco = dr.Banco; oNewRow.BancoDesc = dr.BancoDesc; newDatosPago.Rows.Add(oNewRow); break; } else { dMontoEfectvo = dr.MontoEfectivo; BO.DAL.dsDatos.DatosPagoRow oNewRow = newDatosPago.NewDatosPagoRow(); oNewRow.MontoEfectivo = dr.MontoEfectivo; oNewRow.Importe = dr.MontoEfectivo; oNewRow.Numero = dr.Numero; oNewRow.TipoPago = dr.TipoPago; oNewRow.TipoPagoDesc = dr.TipoPagoDesc; oNewRow.Fecha = dr.Fecha; oNewRow.Devolucion = 0; oNewRow.Banco = dr.Banco; oNewRow.BancoDesc = dr.BancoDesc; newDatosPago.Rows.Add(oNewRow); dMontoRestante = dMonto - dr.MontoEfectivo; } } else { dMontoOtros = dMonto; BO.DAL.dsDatos.DatosPagoRow oNewRow = newDatosPago.NewDatosPagoRow(); oNewRow.MontoEfectivo = 0; oNewRow.Importe = dMonto; oNewRow.Numero = dr.Numero; oNewRow.TipoPago = dr.TipoPago; oNewRow.TipoPagoDesc = dr.TipoPagoDesc; oNewRow.Fecha = dr.Fecha; oNewRow.Devolucion = 0; oNewRow.Banco = dr.Banco; oNewRow.BancoDesc = dr.BancoDesc; newDatosPago.Rows.Add(oNewRow); break; } } }
private void reImprimirToolStripMenuItem_Click(object sender, EventArgs e) { int iReciboId = -1; iReciboId = Convert.ToInt32(dgDatos[0, dgDatos.CurrentCell.RowIndex].Value); //BO.BO.Facturar oFact = new BO.BO.Facturar(); //oFact.RevisarTotales(iReciboId); // MessageBox.Show("Anulación realizada exitosamente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); //ImprimirFactura(oFact.FacturaGenerada); unitOfWork = new BO.DAL.UnitOfWork(); var Recibos = unitOfWork.RecibosRepository.GetByID(iReciboId); if (Recibos != null) { BO.DAL.dsDatos.DatosPagoDataTable oPagos = new BO.DAL.dsDatos.DatosPagoDataTable(); bool bImpreso = Recibos.IMPRESO; if (bImpreso == false && Recibos.ESTADO_ID != 15) { DialogResult oResult = MessageBox.Show("Este recibo no se ha impreso fiscalmente, ¿desea imprimirlo ahora?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (oResult == System.Windows.Forms.DialogResult.No) { return; } } else if (Recibos.ESTADO_ID == 15) { DialogResult oResult = MessageBox.Show("Este recibo fue anulado, no es posible reimprimir", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1); return; } else { DialogResult oResult = MessageBox.Show("Este recibo ya fue impreso fiscalmente, no es posible reimprimir", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1); return; } var PagosRecibos = unitOfWork.PagosRecibosRepository.Get(xy => xy.RECIBO_ID == iReciboId).FirstOrDefault(); if (PagosRecibos != null) { var pagos = unitOfWork.PagosRepository.Get(filter: xy => xy.PAGO_ID == PagosRecibos.PAGO_ID).FirstOrDefault(); var DatosPagos = unitOfWork.DatosPagoRepository.Get(xy => xy.PAGO_ID == pagos.PAGO_ID); foreach (var datosPago in DatosPagos) { BO.DAL.dsDatos.DatosPagoRow oRow = oPagos.NewDatosPagoRow(); oRow.Banco = datosPago.BANCO_ID; oRow.BancoDesc = ""; oRow.Devolucion = 0; oRow.Fecha = DateTime.Now; oRow.Importe = datosPago.IMPORTE; oRow.MontoEfectivo = pagos.MONTO_EFECTIVO; oRow.Numero = 0; oRow.TipoPago = pagos.TIPO_ID; oRow.TipoPagoDesc = ""; oPagos.Rows.Add(oRow); } if (DatosPagos == null || DatosPagos.Any() == false) { BO.DAL.dsDatos.DatosPagoRow oRow = oPagos.NewDatosPagoRow(); oRow.Banco = -1; oRow.BancoDesc = ""; oRow.Devolucion = 0; oRow.Fecha = DateTime.Now; oRow.Importe = pagos.IMP_PAGO; oRow.MontoEfectivo = pagos.MONTO_EFECTIVO; oRow.Numero = 99; oRow.TipoPago = -1; oRow.TipoPagoDesc = ""; oPagos.Rows.Add(oRow); } } if (Recibos.TIPO_REC_ID == 62) //No venta { ImprimirFactura oImpFact = new ImprimirFactura(); oImpFact.ImprimirNoVenta(iReciboId, oPagos); } else { ImprimirFactura oImpFact = new ImprimirFactura(); oImpFact.Imprimir(iReciboId, oPagos); } } }
void FacturarVenta() { ArrayList oBltNumeros = new ArrayList(); bool bCredito, bPagado = false; decimal dMontoEfectivo = 0; decimal dMontoOtros = 0; decimal dDevolucion = 0; decimal dMontoEfectivoNoventa = 0; decimal dMontoOtrosNoVenta = 0; decimal dMontoEfectivoVenta = 0; decimal dMontoOtrosVenta = 0; BO.DAL.dsDatos.DatosPagoDataTable DatosPago = new BO.DAL.dsDatos.DatosPagoDataTable(); BO.DAL.dsDatos.DatosPagoDataTable DatosPagoNoVenta = new BO.DAL.dsDatos.DatosPagoDataTable(); BO.DAL.dsDatos.DatosPagoDataTable DatosPagoVenta = new BO.DAL.dsDatos.DatosPagoDataTable(); bCredito = cmbTipoFact.SelectedIndex == 1; if (!bCredito) { frmDatosPago x = new frmDatosPago(dMontoVenta + dMontoNoVenta); x.StartPosition = FormStartPosition.CenterParent; x.ShowDialog(); dMontoEfectivo = x.MontoEfectivo; dMontoOtros = x.MontoOtros; dDevolucion = x.Devolucion; DatosPago = x.DatosPago; if (x.DialogResult == System.Windows.Forms.DialogResult.OK) { bPagado = true; } else { return; } if (DatosPago.Rows.Count == 0) { BO.DAL.dsDatos.DatosPagoRow oRow = DatosPago.NewDatosPagoRow(); oRow.Banco = -1; oRow.BancoDesc = ""; oRow.Devolucion = dDevolucion; oRow.Fecha = DateTime.Now; oRow.Importe = Convert.ToDecimal(txtMontoTotal.Text); oRow.MontoEfectivo = dMontoEfectivo; oRow.Numero = 99; oRow.TipoPago = -1; oRow.TipoPagoDesc = ""; DatosPago.Rows.Add(oRow); } } else { //VALIDO QUE EL CLIENTE TENGA BALANCE if (oCliente.CTE_BALANCE_DISPONIBLE - Convert.ToDecimal(txtMontoTotal.Text) < 0) { MessageBox.Show("El balance disponible del cliente es de: " + oCliente.CTE_BALANCE_DISPONIBLE.ToString(), "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } bPagado = false; } /*Tengo que hacer doble desglose*/ if (dMontoNoVenta > 0) { if (bCredito == false) { RetornaDatosPagos(DatosPago, ref DatosPagoNoVenta, dMontoNoVenta, ref dMontoEfectivoNoventa, ref dMontoOtrosNoVenta); } FacturarNoVenta(DatosPagoNoVenta, bCredito, dMontoNoVenta, dMontoEfectivoNoventa, dMontoOtrosNoVenta); } if (dMontoVenta > 0) { dMontoEfectivoVenta = dMontoEfectivo - dMontoEfectivoNoventa; if (!bCredito) { if (bCredito == false) { RetornaDatosPagos(DatosPago, ref DatosPagoVenta, dMontoVenta, ref dMontoEfectivoVenta, ref dMontoOtrosVenta); } } if ((bCredito == true) || (bPagado == true)) { }//Aqui tengo que ver si el cliente esta suspendido BultosAFacturar(ref oBltNumeros); BO.BO.Facturar oFact = new BO.BO.Facturar(); if (oFact.CrearFactura(dMontoEfectivoVenta, dMontoOtrosVenta, dDevolucion, DatosPagoVenta, oCliente.CTE_ID, oCliente.CTE_TIPO_FISCAL, Parametros.Parametros.SucursalActual, Parametros.Parametros.UsuarioId, oBltNumeros, oTableCorr, dMontoVenta, bCredito)) {//Todo anduvo bien. Entonces Imprimo y limpio la pantalla. //ImprimirFactura(oFact.FacturaGenerada); //BO.BO.Facturar oFact = new BO.BO.Facturar(); oFact.RevisarTotales(oFact.FacturaGenerada); ImprimirFactura oImpFact = new ImprimirFactura(); oImpFact.Imprimir(oFact.FacturaGenerada, DatosPago); } } }
private void btnFacturar_Click(object sender, EventArgs e) { bool bCredito, bPagado = false; decimal dMontoEfectivo = 0; decimal dMontoOtros = 0; decimal dDevolucion = 0; BO.DAL.dsDatos.DatosPagoDataTable DatosPago = new BO.DAL.dsDatos.DatosPagoDataTable(); if (cmbTipoFact.SelectedIndex == 1) { bCredito = true; } else { bCredito = false; } if (!bCredito) { frmDatosPago x = new frmDatosPago(Convert.ToDecimal(txtMontoTotal.Text)); x.StartPosition = FormStartPosition.CenterParent; x.ShowDialog(); dMontoEfectivo = x.MontoEfectivo; dMontoOtros = x.MontoOtros; dDevolucion = x.Devolucion; DatosPago = x.DatosPago; if (x.DialogResult == System.Windows.Forms.DialogResult.OK) { bPagado = true; } if (DatosPago.Rows.Count == 0) { BO.DAL.dsDatos.DatosPagoRow oRow = DatosPago.NewDatosPagoRow(); oRow.Banco = -1; oRow.BancoDesc = ""; oRow.Devolucion = dDevolucion; oRow.Fecha = DateTime.Now; oRow.Importe = Convert.ToDecimal(txtMontoTotal.Text); oRow.MontoEfectivo = dMontoEfectivo; oRow.Numero = 99; oRow.TipoPago = -1; oRow.TipoPagoDesc = ""; DatosPago.Rows.Add(oRow); } } else { bPagado = false; } if ((bCredito == true) || (bPagado == true)) { if (bCredito) { //VALIDO QUE EL CLIENTE TENGA BALANCE if (oCliente.CTE_BALANCE_DISPONIBLE - Convert.ToDecimal(txtMontoTotal.Text) < 0) { MessageBox.Show("El balance disponible del cliente es de: " + oCliente.CTE_BALANCE_DISPONIBLE.ToString(), "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } }//Aqui tengo que ver si el cliente esta suspendido BO.BO.Facturar oFact = new BO.BO.Facturar(); if (oFact.CrearFacturaEnvio(dMontoEfectivo, dMontoOtros, dDevolucion, DatosPago, oCliente.CTE_ID, oCliente.CTE_TIPO_FISCAL, Parametros.Parametros.SucursalActual, Parametros.Parametros.UsuarioId, oEnvio, oUnidades, Convert.ToDecimal(txtMontoTotal.Text), bCredito)) {//Todo anduvo bien. Entonces Imprimo y limpio la pantalla. //ImprimirFactura(oFact.FacturaGenerada); ImprimirFactura oImpFact = new ImprimirFactura(); oImpFact.Imprimir(oFact.FacturaGenerada, DatosPago); LimpiarPantalla(); } } }