public override void ActualizarElemento() { Lbl.Bancos.Cheque Res = this.Elemento as Lbl.Bancos.Cheque; Res.Emisor = EntradaEmisor.Text; Res.Banco = EntradaBanco.Elemento as Lbl.Bancos.Banco; Res.Numero = Lfx.Types.Parsing.ParseInt(EntradaNumero.Text); Res.FechaCobro = Lfx.Types.Parsing.ParseDate(EntradaFechaCobro.Text); Res.FechaEmision = Lfx.Types.Parsing.ParseDate(EntradaFechaEmision.Text); base.ActualizarElemento(); }
public override void ActualizarControl() { Lbl.Bancos.Cheque Res = this.Elemento as Lbl.Bancos.Cheque; EntradaEmisor.Text = Res.Emisor; EntradaBanco.Elemento = Res.Banco; EntradaNumero.Text = Res.Numero.ToString(); EntradaFechaCobro.Text = Lfx.Types.Formatting.FormatDate(Res.FechaCobro); EntradaFechaEmision.Text = Lfx.Types.Formatting.FormatDate(Res.FechaEmision); base.ActualizarControl(); }
public override Lfx.Types.OperationResult Ok() { Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult(); if (EntradaCajaOrigen.ValueInt <= 0) { Res.Success = false; Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine; } if (EntradaTotal.ValueDecimal <= 0) { Res.Success = false; Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine; } if (Res.Success == true) { decimal Impuestos = EntradaImpuestos.ValueDecimal; IDbTransaction Trans = null; if (this.Connection.InTransaction == false) { Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); } string ChequesNum = null; System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")"); Lbl.Cajas.Caja CajaOrigen = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt); foreach (System.Data.DataRow RowCheque in TablaCheques.Rows) { Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque); Cheque.Pagar(CajaOrigen); } if (Impuestos != 0) { CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, "Cheques Nº " + ChequesNum, null, null, null); } if (Trans != null) { Trans.Commit(); } } return(Res); }
private Lfx.Types.OperationResult Efectivizar() { Lfc.Bancos.Cheques.Efectivizar Efectivizar = new Lfc.Bancos.Cheques.Efectivizar(); foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked && (itm.SubItems["bancos_cheques.estado"].Text == "A cobrar" || itm.SubItems["bancos_cheques.estado"].Text == "Depositado")) { int IdCheque = Lfx.Types.Parsing.ParseInt(itm.Text); Lbl.Bancos.Cheque Ch = new Lbl.Bancos.Cheque(this.Connection, IdCheque); Efectivizar.EntradaSubTotal.ValueDecimal = Ch.Importe; Efectivizar.Cheque = Ch; if (Efectivizar.ShowDialog() != System.Windows.Forms.DialogResult.OK) { itm.Checked = false; return(new Lfx.Types.CancelOperationResult()); } } } return(new Lfx.Types.SuccessOperationResult()); }
private Lfx.Types.OperationResult EditarPago() { Lbl.Comprobantes.ComprobanteConArticulos Factura = this.Elemento as Lbl.Comprobantes.ComprobanteConArticulos; if (Factura.ImporteCancelado >= Factura.Total) { return(new Lfx.Types.FailureOperationResult("Este comprobante ya fue cancelado en su totalidad.")); } if (Factura.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.Efectivo) { using (IDbTransaction Trans = Factura.Connection.BeginTransaction()) { Factura.AsentarPago(false); Factura.MoverExistencias(false); Trans.Commit(); } this.PuedeEditarPago = false; } else if (Factura.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { CrearReciboParaEstaFactura(); } else { using (Comprobantes.Recibos.EditarCobro FormularioEditarPago = new Comprobantes.Recibos.EditarCobro()) { FormularioEditarPago.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, Factura.FormaDePago)); FormularioEditarPago.Cobro.FormaDePagoEditable = true; FormularioEditarPago.Cobro.Importe = Factura.Total; FormularioEditarPago.Cobro.ImporteVisible = true; FormularioEditarPago.Cobro.ImporteEditable = false; if (FormularioEditarPago.ShowDialog() == DialogResult.OK) { Lbl.Comprobantes.Cobro MiCobro = FormularioEditarPago.Cobro.ToCobro(Factura.Connection); if (MiCobro.FormaDePago.Id != Factura.FormaDePago.Id) { // Tengo que actualizar la forma de pago using (IDbTransaction Trans = Factura.Connection.BeginTransaction()) { Factura.FormaDePago = MiCobro.FormaDePago; EntradaFormaPago.Elemento = MiCobro; Factura.Connection.FieldInt("UPDATE comprob SET id_formapago=" + MiCobro.FormaDePago.Id.ToString() + " WHERE id_comprob=" + Factura.Id.ToString()); if (MiCobro.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { // Si la nueva forma de pago es cta. cte., asiento el saldo // Y uso saldo a favor, si lo hay decimal Saldo = Factura.Cliente.CuentaCorriente.ObtenerSaldo(true); Factura.Cliente.CuentaCorriente.AsentarMovimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Saldo a Cta. Cte. s/" + Factura.ToString(), Factura.ImporteImpago, null, Factura, null, null); if (Saldo < 0) { Saldo = Math.Abs(Saldo); if (Saldo > Factura.Total) { Factura.CancelarImporte(Factura.Total, null); } else { Factura.CancelarImporte(Saldo, null); } } } Trans.Commit(); } } switch (Factura.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: using (IDbTransaction TransEfe = Factura.Connection.BeginTransaction()) { Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(Factura.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, Factura.ToString(), Factura.Cliente, Factura.ImporteImpago, Factura.Obs, Factura, null, null); Factura.CancelarImporte(Factura.Total, null); TransEfe.Commit(); } break; case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: CrearReciboParaEstaFactura(); break; case Lbl.Pagos.TiposFormasDePago.ChequeTerceros: using (IDbTransaction TransCheTer = Factura.Connection.BeginTransaction()) { Lbl.Bancos.Cheque Cheque = MiCobro.Cheque; Cheque.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Cheque.ConceptoTexto = "Cobro s/" + this.Elemento.ToString(); Cheque.Factura = Factura; Cheque.Guardar(); Factura.CancelarImporte(Factura.Total, null); TransCheTer.Commit(); } PuedeEditarPago = false; break; case Lbl.Pagos.TiposFormasDePago.Tarjeta: using (IDbTransaction TransTarj = Factura.Connection.BeginTransaction()) { Lbl.Pagos.Cupon CuponCredito = MiCobro.Cupon; CuponCredito.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; CuponCredito.ConceptoTexto = "Cobro s/" + Factura.ToString(); if (EntradaVendedor.ValueInt > 0) { CuponCredito.Vendedor = new Lbl.Personas.Persona(Factura.Connection, EntradaVendedor.ValueInt); } CuponCredito.Factura = Factura; CuponCredito.Guardar(); Factura.CancelarImporte(Factura.Total, null); TransTarj.Commit(); } PuedeEditarPago = false; break; case Lbl.Pagos.TiposFormasDePago.Caja: using (IDbTransaction TransCaja = Factura.Connection.BeginTransaction()) { Lbl.Cajas.Caja CajaDeposito = MiCobro.CajaDestino; CajaDeposito.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Cobro s/" + Factura.ToString(), Factura.Cliente, MiCobro.Importe, MiCobro.Obs, Factura, null, null); Factura.CancelarImporte(Factura.Total, null); TransCaja.Commit(); } PuedeEditarPago = false; break; default: throw new NotImplementedException("No se reconoce la forma de pago " + Factura.FormaDePago.Tipo.ToString()); } } else { return(new Lfx.Types.SuccessOperationResult()); } } this.PuedeEditarPago = false; } return(new Lfx.Types.SuccessOperationResult()); }
public override void OnLoad() { if (this.Registro != null) { this.Numero = System.Convert.ToInt32(m_Registro["numero"]); this.PV = System.Convert.ToInt32(m_Registro["pv"]); if (m_Registro["id_concepto"] != null) { this.Concepto = new Lbl.Cajas.Concepto(this.Connection, this.GetFieldValue <int>("id_concepto")); } else { this.Concepto = null; } if (m_Registro["concepto"] != null) { this.ConceptoTexto = m_Registro["concepto"].ToString(); } else { this.ConceptoTexto = string.Empty; } this.Cobros = new ColeccionDeCobros(); this.Pagos = new ColeccionDePagos(); // Cargo pagos asociados al registro // Pagos en efectivo using (System.Data.DataTable TablaPagos = Connection.Select("SELECT * FROM cajas_movim WHERE id_caja=" + Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria.ToString() + " AND id_recibo=" + Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { decimal ImporteCaja = System.Convert.ToDecimal(Pago["importe"]); if (this.DePago && ImporteCaja < 0) { Pago Pg = new Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo, -ImporteCaja); Pg.Recibo = this; Pagos.Add(Pg); } else if (this.DePago == false && ImporteCaja > 0) { Cobro Cb = new Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo, ImporteCaja); Cb.Recibo = this; Cobros.Add(Cb); } } } // Pagos con cheque using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT * FROM bancos_cheques WHERE (id_recibo=" + this.Id.ToString() + " OR id_recibo_pago=" + this.Id.ToString() + ")")) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { Bancos.Cheque Ch = new Lbl.Bancos.Cheque(Connection, (Lfx.Data.Row)Pago); if (this.DePago) { Ch.ReciboPago = this; } else { Ch.ReciboCobro = this; } if (this.DePago) { Pagos.Add(new Pago(Ch)); } else { Cobros.Add(new Cobro(Ch)); } } } // Pagos con Tarjetas de Crédito y Débito using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT id_cupon FROM tarjetas_cupones WHERE id_recibo=" + Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { Pagos.Cupon Cp = new Pagos.Cupon(Connection, System.Convert.ToInt32(Pago["id_cupon"])); Cobros.Add(new Cobro(Cp)); } } // Acreditaciones en cuenta regular (excepto caja diaria) using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT * FROM cajas_movim WHERE auto=1 AND id_caja<>" + Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria.ToString() + " AND id_caja<>" + Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques.ToString() + " AND id_recibo=" + this.Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { if (this.DePago) { Pago Pg = new Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Caja, Math.Abs(System.Convert.ToDecimal(Pago["importe"]))); Pg.Recibo = this; Pg.CajaOrigen = new Cajas.Caja(Connection, System.Convert.ToInt32(Pago["id_caja"])); Pagos.Add(Pg); } else { Cobro Cb = new Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Caja, System.Convert.ToDecimal(Pago["importe"])); Cb.Recibo = this; Cb.CajaDestino = new Cajas.Caja(Connection, System.Convert.ToInt32(Pago["id_caja"])); Cobros.Add(Cb); } } } // Otros valores using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT id_valor FROM pagos_valores WHERE id_recibo=" + Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { Lbl.Pagos.Valor Vl = new Lbl.Pagos.Valor(Connection, System.Convert.ToInt32(Pago["id_valor"])); Vl.Recibo = this; if (this.DePago) { Pagos.Add(new Pago(Vl)); } else { Cobros.Add(new Cobro(Vl)); } } } } base.OnLoad(); }
private Lfx.Types.OperationResult Efectivizar() { Lfc.Bancos.Cheques.Efectivizar Efectivizar = new Lfc.Bancos.Cheques.Efectivizar(); foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked && (itm.SubItems["bancos_cheques.estado"].Text == "A cobrar" || itm.SubItems["bancos_cheques.estado"].Text == "Depositado")) { int IdCheque = Lfx.Types.Parsing.ParseInt(itm.Text); Lbl.Bancos.Cheque Ch = new Lbl.Bancos.Cheque(this.Connection, IdCheque); Efectivizar.EntradaSubTotal.ValueDecimal = Ch.Importe; Efectivizar.Cheque = Ch; if (Efectivizar.ShowDialog() != System.Windows.Forms.DialogResult.OK) { itm.Checked = false; return new Lfx.Types.CancelOperationResult(); } } } return new Lfx.Types.SuccessOperationResult(); }
public void AsentarPago(bool anulacion) { if (this.FormaDePago == null) return; decimal ImporteMovim; if(anulacion) // Al cancelar, desasiento el importe pagado ImporteMovim = this.ImporteCancelado; else // Al ingresar la factura, asiento el importe impago (que normalmente es el total) ImporteMovim = this.Total; if (this.FormaDePago.Tipo == Pagos.TiposFormasDePago.CuentaCorriente) // Si es cuenta corriente muevo siempre el total (incluso al anular) ImporteMovim = this.Total; if (this.Tipo.DireccionCtaCte < 0) // Este tipo de comprobantes hace créditos en cuenta corriente ImporteMovim = -ImporteMovim; if (this.Compra) { // Es comprobante de compra, invierto la dirección del movimiento ImporteMovim = -ImporteMovim; } if (anulacion == false) { // Asiento el pago (sólo efectivo y cta. cte.) // El resto de los pagos los maneja el formulario desde donde se mandó a imprimir switch (this.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: if (this.ImporteImpago > 0) { Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, this.ToString(), this.Cliente, ImporteMovim, null, this, null, null); this.CancelarImporte(this.ImporteImpago, null); } break; case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: this.Cliente.CuentaCorriente.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, this.ToString(), ImporteMovim, null, this, null, null); if (this.Tipo.EsNotaCredito) { if (this.ComprobRelacionados == null || this.ComprobRelacionados.Count == 0) { // Si no hay comprobantes asociados, pero esta nota de crédito viene de un comprobante anteior // asocio el comprobante original a esta nota de crédito if (this.ComprobanteOriginal != null && this.ComprobanteOriginal.Tipo.EsFacturaOTicket) { this.ComprobRelacionados = new ColeccionComprobanteImporte(); this.ComprobRelacionados.AddWithValue(this.ComprobanteOriginal, 0); } } Lbl.Comprobantes.Recibo.CancelarImpagos(this.Cliente, this.ComprobRelacionados, this, this.Compra ? -this.Total : this.Total); } decimal FacturaSaldo = this.ImporteImpago; if (FacturaSaldo > 0) { decimal SaldoCtaCteAntes = -(ImporteMovim - this.Cliente.CuentaCorriente.ObtenerSaldo(true)); // Busca un saldo en cta cte para cancelar este comprobante if ((ImporteMovim > 0 && SaldoCtaCteAntes < 0) || (ImporteMovim < 0 && SaldoCtaCteAntes > 0)) { decimal SaldoACancelar = ImporteMovim < 0 ? SaldoCtaCteAntes : -SaldoCtaCteAntes; if (SaldoACancelar > FacturaSaldo) SaldoACancelar = FacturaSaldo; // Cancelo la factura con un saldo a favor que tenía en cta. cte. qGen.Update ActualizarComprob = new qGen.Update("comprob"); ActualizarComprob.Fields.AddWithValue("cancelado", new qGen.SqlExpression("cancelado+" + Lfx.Types.Formatting.FormatCurrencySql(SaldoACancelar))); ActualizarComprob.WhereClause = new qGen.Where("id_comprob", this.Id); this.Connection.Execute(ActualizarComprob); } } break; } } else { // Es una anulación, invierto la dirección del movimiento ImporteMovim = -ImporteMovim; switch (this.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: // Hago un movimiento en caja diaria Lbl.Cajas.Caja Caja = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); Caja.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Anulación " + this.ToString(), this.Cliente, ImporteMovim, null, this, null, null); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: case Pagos.TiposFormasDePago.ChequeTerceros: Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(Connection, this); if (Cheque != null && Cheque.Existe) Cheque.Anular(); break; case Pagos.TiposFormasDePago.Caja: throw new NotImplementedException("No implementado: anular comprobante pagado con depósito en caja."); case Lbl.Pagos.TiposFormasDePago.CuentaCorriente: // Quito el saldo pagado de la cuenta corriente this.Cliente.CuentaCorriente.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Anulación " + this.ToString(), ImporteMovim, null, this, null, null); if (this.Tipo.EsNotaCredito) Lbl.Comprobantes.Recibo.DescancelarImpagos(this.Cliente, this.ComprobRelacionados, this, this.Compra ? -this.Total : this.Total); //this.Cliente.CuentaCorriente.CancelarComprobantesConSaldo(ImporteMovimCtaCte, false); break; case Lbl.Pagos.TiposFormasDePago.Tarjeta: case Pagos.TiposFormasDePago.OtroValor: Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(Connection, this); if (Cupon != null && Cupon.Existe) Cupon.Anular(); break; } } }
public override void OnLoad() { if (this.Registro != null) { this.Numero = System.Convert.ToInt32(m_Registro["numero"]); this.PV = System.Convert.ToInt32(m_Registro["pv"]); if (m_Registro["id_concepto"] != null) this.Concepto = new Lbl.Cajas.Concepto(this.Connection, this.GetFieldValue<int>("id_concepto")); else this.Concepto = null; if (m_Registro["concepto"] != null) this.ConceptoTexto = m_Registro["concepto"].ToString(); else this.ConceptoTexto = string.Empty; this.Cobros = new ColeccionDeCobros(); this.Pagos = new ColeccionDePagos(); // Cargo pagos asociados al registro // Pagos en efectivo using (System.Data.DataTable TablaPagos = Connection.Select("SELECT * FROM cajas_movim WHERE id_caja=" + Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria.ToString() + " AND id_recibo=" + Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { decimal ImporteCaja = System.Convert.ToDecimal(Pago["importe"]); if (this.DePago && ImporteCaja < 0) { Pago Pg = new Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo, -ImporteCaja); Pg.Recibo = this; Pagos.Add(Pg); } else if (this.DePago == false && ImporteCaja > 0) { Cobro Cb = new Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo, ImporteCaja); Cb.Recibo = this; Cobros.Add(Cb); } } } // Pagos con cheque using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT * FROM bancos_cheques WHERE (id_recibo=" + this.Id.ToString() + " OR id_recibo_pago=" + this.Id.ToString() + ")")) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { Bancos.Cheque Ch = new Lbl.Bancos.Cheque(Connection, (Lfx.Data.Row)Pago); if (this.DePago) Ch.ReciboPago = this; else Ch.ReciboCobro = this; if (this.DePago) Pagos.Add(new Pago(Ch)); else Cobros.Add(new Cobro(Ch)); } } // Pagos con Tarjetas de Crédito y Débito using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT id_cupon FROM tarjetas_cupones WHERE id_recibo=" + Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { Pagos.Cupon Cp = new Pagos.Cupon(Connection, System.Convert.ToInt32(Pago["id_cupon"])); Cobros.Add(new Cobro(Cp)); } } // Acreditaciones en cuenta regular (excepto caja diaria) using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT * FROM cajas_movim WHERE auto=1 AND id_caja<>" + Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria.ToString() + " AND id_caja<>" + Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques.ToString() + " AND id_recibo=" + this.Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { if (this.DePago) { Pago Pg = new Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Caja, Math.Abs(System.Convert.ToDecimal(Pago["importe"]))); Pg.Recibo = this; Pg.CajaOrigen = new Cajas.Caja(Connection, System.Convert.ToInt32(Pago["id_caja"])); Pagos.Add(Pg); } else { Cobro Cb = new Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Caja, System.Convert.ToDecimal(Pago["importe"])); Cb.Recibo = this; Cb.CajaDestino = new Cajas.Caja(Connection, System.Convert.ToInt32(Pago["id_caja"])); Cobros.Add(Cb); } } } // Otros valores using (System.Data.DataTable TablaPagos = this.Connection.Select("SELECT id_valor FROM pagos_valores WHERE id_recibo=" + Id.ToString())) { foreach (System.Data.DataRow Pago in TablaPagos.Rows) { Lbl.Pagos.Valor Vl = new Lbl.Pagos.Valor(Connection, System.Convert.ToInt32(Pago["id_valor"])); Vl.Recibo = this; if (this.DePago) Pagos.Add(new Pago(Vl)); else Cobros.Add(new Cobro(Vl)); } } } base.OnLoad(); }
public override Lfx.Types.OperationResult Ok() { Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult(); if (EntradaCajaOrigen.ValueInt <= 0) { Res.Success = false; Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine; } if (EntradaTotal.ValueDecimal <= 0) { Res.Success = false; Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine; } if (Res.Success == true) { decimal Impuestos = EntradaImpuestos.ValueDecimal; IDbTransaction Trans = null; if (this.Connection.InTransaction == false) { Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable); } string ChequesNum = null; System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")"); Lbl.Cajas.Caja CajaOrigen = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt); foreach (System.Data.DataRow RowCheque in TablaCheques.Rows) { Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque); Cheque.Pagar(CajaOrigen); } if (Impuestos != 0) CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, "Cheques Nº " + ChequesNum, null, null, null); if (Trans != null) { Trans.Commit(); } } return Res; }
private void BotonAcreditar_Click(object sender, System.EventArgs e) { if (Listado.CheckedItems.Count == 0) { Lui.Forms.MessageBox.Show("Debe marcar uno o más cupones para acreditar.", "Acreditar"); return; } using (Lfc.Tarjetas.Cupones.Acreditar FormularioAcreditacion = new Lfc.Tarjetas.Cupones.Acreditar()) { Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Acreditando cupones", "Se están marcando los cupones seleccionados como 'Acreditado'."); Progreso.Modal = false; decimal Total = 0; decimal TotalAcreditar = 0; int iCantidad = 0; System.Text.StringBuilder Cupones = new System.Text.StringBuilder(); decimal ComisionTarjeta = 0; decimal ComisionPlan = 0; decimal GestionDeCobro = 0; Progreso.Max = Listado.Items.Count + 2; Progreso.Begin(); Progreso.ChangeStatus("Analizando"); Lbl.Pagos.FormaDePago Tarjeta = null; foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { iCantidad++; Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); Total += Cupon.Importe; if (Cupones.Length > 0) { Cupones.Append("," + Cupon.Numero); } else { Cupones.Append(Cupon.Numero); } if (Cupon.FormaDePago != null) { if (Tarjeta == null) { Tarjeta = Cupon.FormaDePago; } else if (Tarjeta.Id != Cupon.FormaDePago.Id) { //Mezcla de tarjetas Progreso.End(); Lui.Forms.MessageBox.Show("No todos los cupones seleccionados pertenecen a la misma forma de pago.", "Error"); return; } ComisionTarjeta += Cupon.Importe * (Tarjeta.Retencion / 100); if (Cupon.Plan != null) { ComisionPlan += Cupon.Importe * (Cupon.Plan.Comision / 100); } } } Progreso.ChangeStatus(itm.Index); } FormularioAcreditacion.IgnorarCambios = true; FormularioAcreditacion.EntradaCuponesCantidad.Text = iCantidad.ToString(); FormularioAcreditacion.EntradaCuponesSubTotal.Text = Lfx.Types.Formatting.FormatCurrency(Total, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionTarjeta.Text = Lfx.Types.Formatting.FormatCurrency(ComisionTarjeta, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionPlan.Text = Lfx.Types.Formatting.FormatCurrency(ComisionPlan, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.EntradaComisionUsuario.Text = "0"; FormularioAcreditacion.EntradaTotal.Text = Lfx.Types.Formatting.FormatCurrency(Total - ComisionTarjeta - ComisionPlan, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales); FormularioAcreditacion.IgnorarCambios = false; bool Aceptar = false; Lfc.Comprobantes.Recibos.EditarCobro FormularioPago = new Lfc.Comprobantes.Recibos.EditarCobro(); do { if (FormularioAcreditacion.ShowDialog() == DialogResult.OK) { TotalAcreditar = Lfx.Types.Parsing.ParseCurrency(FormularioAcreditacion.EntradaTotal.Text); GestionDeCobro = Total - TotalAcreditar; FormularioPago.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, ((Lbl.Pagos.TiposFormasDePago)(Lfx.Types.Parsing.ParseInt(FormularioAcreditacion.EntradaFormaPago.TextKey))))); FormularioPago.Cobro.FormaDePagoEditable = false; FormularioPago.Cobro.Importe = TotalAcreditar; FormularioPago.Cobro.ImporteEditable = false; if (Tarjeta != null && Tarjeta.Caja != null) { FormularioPago.Cobro.EntradaCaja.ValueInt = Tarjeta.Caja.Id; } FormularioPago.Cobro.Obs = "Cupones Nº " + Cupones.ToString(); FormularioPago.Cobro.ObsEditable = false; if (FormularioPago.ShowDialog() == DialogResult.OK) { Aceptar = true; break; } } else { Aceptar = false; break; } }while (true); if (Aceptar) { IDbTransaction Trans = Connection.BeginTransaction(IsolationLevel.Serializable); Progreso.ChangeStatus("Asentando el movimiento"); Progreso.Max = Listado.Items.Count + 2; Progreso.Begin(); // Marcar los cupones como acreditados foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(this.Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); if (Cupon.Estado == 0 || Cupon.Estado == 10) { Cupon.Acreditar(); } } Progreso.ChangeStatus(itm.Index); } Progreso.ChangeStatus("Acreditando el importe"); // Acreditar el dinero Lbl.Comprobantes.Cobro MiCobro = FormularioPago.Cobro.ToCobro(Connection); switch (FormularioPago.Cobro.FormaDePago.Tipo) { case Lbl.Pagos.TiposFormasDePago.Efectivo: Lbl.Cajas.Caja CajaDiaria = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria); CajaDiaria.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Acreditación de Cupones", null, Total, "Cupones Nº " + Cupones.ToString(), null, null, null); CajaDiaria.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestión de Cobro de Cupones", null, -GestionDeCobro, "Cupones Nº " + Cupones.ToString(), null, null, null); break; case Lbl.Pagos.TiposFormasDePago.ChequePropio: Lbl.Bancos.Cheque Cheque = MiCobro.Cheque; Cheque.Concepto = Lbl.Cajas.Concepto.IngresosPorFacturacion; Cheque.ConceptoTexto = "Acreditación Tarjetas"; Cheque.Guardar(); break; case Lbl.Pagos.TiposFormasDePago.Caja: MiCobro.CajaDestino.Movimiento(true, Lbl.Cajas.Concepto.IngresosPorFacturacion, "Acreditación de Cupones", null, Total, "Cupones Nº " + Cupones.ToString(), null, null, null); MiCobro.CajaDestino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestión de Cobro de Cupones", null, -GestionDeCobro, "Cupones Nº " + Cupones.ToString(), null, null, null); break; } Trans.Commit(); Progreso.End(); } } this.RefreshList(); }