private void BotonPresentar_Click(object sender, EventArgs e) { if (Listado.CheckedItems.Count == 0) { Lui.Forms.MessageBox.Show("Debe marcar uno o más cupones para presentar.", "Acreditar"); return; } int CantidadCupones = 0; foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { CantidadCupones++; if (itm.SubItems["tarjetas_cupones.estado"].Text != "Sin presentar") { Lui.Forms.MessageBox.Show("Sólo se pueden hacer presentaciones de cupones que no han sido presentados.", "Presentación de cupones"); return; } } } if (CantidadCupones == 0) { Lui.Forms.MessageBox.Show("Debe seleccionar uno o más cupones para presentar.", "Presentación de cupones"); return; } using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("¿Desea marcar los cupones seleccionados como presentados?", "Presentación de cupones")) { Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo; if (Pregunta.ShowDialog() == DialogResult.OK) { IDbTransaction Trans = Connection.BeginTransaction(IsolationLevel.Serializable); Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Presentación de cupones", "Se están marcando los cupones seleccionados como 'Presentados'."); Progreso.Max = CantidadCupones; Progreso.Begin(); foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { Progreso.Advance(1); Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(this.Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); if (Cupon.Estado == 0) { Cupon.Presentar(); } } } Progreso.End(); Trans.Commit(); this.RefreshList(); } } }
private void BotonAnular_Click(object sender, System.EventArgs e) { if (Listado.CheckedItems.Count == 0) { Lui.Forms.MessageBox.Show("Debe marcar uno o más cupones para anular.", "Acreditar"); return; } int CantidadCupones = 0; foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { CantidadCupones++; if (itm.SubItems["tarjetas_cupones.estado"].Text != "Sin presentar" && itm.SubItems["estado"].Text != "Presentado") { Lui.Forms.MessageBox.Show("Sólo se pueden anular cupones que no han sido acreditados o rechazados.", "Anular de cupones"); return; } } } if (CantidadCupones == 0) { Lui.Forms.MessageBox.Show("Debe seleccionar uno o más cupones para anular.", "Anular de cupones"); return; } using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("¿Desea eliminar de manera permanente los cupones seleccionados?", "Anular cupones")) { Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo; if (Pregunta.ShowDialog() == DialogResult.OK) { Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Anulando cupones", "Se van a eleiminar los cupones seleccionados"); Progreso.Max = CantidadCupones; Progreso.Begin(); foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { Progreso.Advance(1); Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(this.Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); if (Cupon.Estado == 0 || Cupon.Estado == 10) { Cupon.Anular(); } } } Progreso.End(); this.RefreshList(); } } }
public override void ActualizarElemento() { Lbl.Pagos.Cupon Elem = this.Elemento as Lbl.Pagos.Cupon; Elem.Numero = EntradaNumero.Text; Elem.FormaDePago = EntradaFormaPago.Elemento as Lbl.Pagos.FormaDePago; Elem.Plan = EntradaPlan.Elemento as Lbl.Pagos.Plan; Elem.FechaPresentacion = Lfx.Types.Parsing.ParseDate(EntradaFechaPresentacion.Text); Elem.FechaAcreditacion = Lfx.Types.Parsing.ParseDate(EntradaFechaAcreditacion.Text); base.ActualizarElemento(); }
public override void ActualizarControl() { Lbl.Pagos.Cupon Elem = this.Elemento as Lbl.Pagos.Cupon; EntradaNumero.Text = Elem.Numero.ToString(); EntradaFormaPago.Elemento = Elem.FormaDePago; EntradaPlan.Elemento = Elem.Plan; EntradaFechaPresentacion.Text = Lfx.Types.Formatting.FormatDate(Elem.FechaPresentacion); EntradaFechaAcreditacion.Text = Lfx.Types.Formatting.FormatDate(Elem.FechaAcreditacion); base.ActualizarControl(); }
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 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; } } }
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(); }
private void BotonPresentar_Click(object sender, EventArgs e) { if (Listado.CheckedItems.Count == 0) { Lui.Forms.MessageBox.Show("Debe marcar uno o más cupones para presentar.", "Acreditar"); return; } int CantidadCupones = 0; foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { CantidadCupones++; if (itm.SubItems["tarjetas_cupones.estado"].Text != "Sin presentar") { Lui.Forms.MessageBox.Show("Sólo se pueden hacer presentaciones de cupones que no han sido presentados.", "Presentación de cupones"); return; } } } if (CantidadCupones == 0) { Lui.Forms.MessageBox.Show("Debe seleccionar uno o más cupones para presentar.", "Presentación de cupones"); return; } using (Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("¿Desea marcar los cupones seleccionados como presentados?", "Presentación de cupones")) { Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo; if (Pregunta.ShowDialog() == DialogResult.OK) { Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Presentación de cupones", "Se están marcando los cupones seleccionados como 'Presentados'."); Progreso.Max = CantidadCupones; Progreso.Begin(); foreach (System.Windows.Forms.ListViewItem itm in Listado.Items) { if (itm.Checked) { Progreso.Advance(1); Lbl.Pagos.Cupon Cupon = new Lbl.Pagos.Cupon(this.Connection, Lfx.Types.Parsing.ParseInt(itm.Text)); if (Cupon.Estado == 0) Cupon.Presentar(); } } Progreso.End(); this.RefreshList(); } } }
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(); }