示例#1
0
        private void BotonValoresAgregar_Click(object sender, System.EventArgs e)
        {
            if (this.DePago)
            {
                Comprobantes.Recibos.EditarPago FormularioEditarPago = new Comprobantes.Recibos.EditarPago();
                FormularioEditarPago.Connection = this.Connection;
                FormularioEditarPago.Pago.FromPago(new Lbl.Comprobantes.Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo));
                FormularioEditarPago.Pago.ObsVisible = false;

                if (FormularioEditarPago.ShowDialog() == DialogResult.OK)
                {
                    Lbl.Comprobantes.Pago   MiPago = FormularioEditarPago.Pago.ToPago(this.Connection);
                    Lbl.Comprobantes.Recibo Rec    = this.Elemento as Lbl.Comprobantes.Recibo;
                    Rec.Connection = this.Connection;
                    Rec.Pagos.Add(MiPago);
                    this.MostrarValores();
                }
            }
            else
            {
                Comprobantes.Recibos.EditarCobro FormularioEditarCobro = new Comprobantes.Recibos.EditarCobro();
                FormularioEditarCobro.Connection = this.Connection;
                FormularioEditarCobro.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo));
                FormularioEditarCobro.Cobro.ObsVisible = false;

                if (FormularioEditarCobro.ShowDialog() == DialogResult.OK)
                {
                    Lbl.Comprobantes.Cobro  MiCobro = FormularioEditarCobro.Cobro.ToCobro(this.Connection);
                    Lbl.Comprobantes.Recibo Rec     = this.Elemento as Lbl.Comprobantes.Recibo;
                    Rec.Cobros.Add(MiCobro);
                    this.MostrarValores();
                }
            }
        }
示例#2
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());
        }
示例#3
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.Movimiento(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();
                }
示例#4
0
                private void BotonValoresAgregar_Click(object sender, System.EventArgs e)
                {
                        if (this.DePago) {
                                Comprobantes.Recibos.EditarPago FormularioEditarPago = new Comprobantes.Recibos.EditarPago();
                                FormularioEditarPago.Connection = this.Connection;
                                FormularioEditarPago.Pago.FromPago(new Lbl.Comprobantes.Pago(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo));
                                FormularioEditarPago.Pago.ObsVisible = false;

                                if (FormularioEditarPago.ShowDialog() == DialogResult.OK) {
                                        Lbl.Comprobantes.Pago MiPago = FormularioEditarPago.Pago.ToPago(this.Connection);
                                        Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
                                        Rec.Pagos.Add(MiPago);
                                        this.MostrarValores();
                                }
                        } else {
                                Comprobantes.Recibos.EditarCobro FormularioEditarCobro = new Comprobantes.Recibos.EditarCobro();
                                FormularioEditarCobro.Connection = this.Connection;
                                FormularioEditarCobro.Cobro.FromCobro(new Lbl.Comprobantes.Cobro(this.Connection, Lbl.Pagos.TiposFormasDePago.Efectivo));
                                FormularioEditarCobro.Cobro.ObsVisible = false;

                                if (FormularioEditarCobro.ShowDialog() == DialogResult.OK) {
                                        Lbl.Comprobantes.Cobro MiCobro = FormularioEditarCobro.Cobro.ToCobro(this.Connection);
                                        Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
                                        Rec.Cobros.Add(MiCobro);
                                        this.MostrarValores();
                                }
                        }
                }