Beispiel #1
0
        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();
                }
            }
        }
Beispiel #2
0
        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();
                }
            }
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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;
                                }
                        }
                }
Beispiel #7
0
        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();
        }
Beispiel #8
0
                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();
                                }
                        }
                }
Beispiel #9
0
                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();
                }