Example #1
0
        public override void OnLoad()
        {
            if (this.Registro != null)
            {
                if (this.GetFieldValue <int>("id_banco") > 0)
                {
                    this.Banco = new Bancos.Banco(this.Connection, this.GetFieldValue <int>("id_banco"));
                }
                else
                {
                    this.Banco = null;
                }

                if (this.GetFieldValue <int>("id_caja") > 0)
                {
                    this.Caja = new Cajas.Caja(this.Connection, this.GetFieldValue <int>("id_caja"));
                }
                else
                {
                    this.Caja = null;
                }

                if (this.GetFieldValue <int>("id_sucursal") > 0)
                {
                    this.Sucursal = new Lbl.Entidades.Sucursal(this.Connection, this.GetFieldValue <int>("id_sucursal"));
                }
                else
                {
                    this.Sucursal = null;
                }
            }
            base.OnLoad();
        }
Example #2
0
        private void EntradaOrigenDestino_TextChanged(object sender, System.EventArgs e)
        {
            CajaOrigen  = EntradaOrigen.Elemento as Lbl.Cajas.Caja;
            CajaDestino = EntradaDestino.Elemento as Lbl.Cajas.Caja;
            if (CajaOrigen == null || CajaDestino == null)
            {
                return;
            }

            MonedaOrigen  = CajaOrigen.ObtenerMoneda();
            MonedaDestino = CajaDestino.ObtenerMoneda();

            if (MonedaOrigen != null && MonedaDestino != null)
            {
                EntradaImporte.Prefijo        = MonedaOrigen.Simbolo;
                EntradaImporteDestino.Prefijo = MonedaDestino.Simbolo;
                if (MonedaDestino.Cotizacion != MonedaOrigen.Cotizacion)
                {
                    EntradaImporteDestino.ValueDecimal = EntradaImporte.ValueDecimal * MonedaDestino.Cotizacion / MonedaOrigen.Cotizacion;
                    EntradaImporteDestino.Visible      = true;
                    EtiquetaImporteDestino.Visible     = true;
                    // TODO: EntradaImporteDestino.ShowBalloon("Se realiza una conversión de moneda según la cotización " + System.Convert.ToString(MonedaOrigen["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaOrigen["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales) + " = " + System.Convert.ToString(MonedaDestino["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaDestino["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales));
                }
                else
                {
                    EntradaImporteDestino.Visible  = false;
                    EtiquetaImporteDestino.Visible = false;
                }
            }
            else
            {
                EntradaImporteDestino.Visible  = false;
                EtiquetaImporteDestino.Visible = false;
            }
        }
Example #3
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
            if (EntradaCajaDestino.ValueInt <= 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione la cuenta de destino." + Environment.NewLine;
            }
            if (EntradaTotal.ValueDecimal <= 0)
            {
                Res.Success  = false;
                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
            }
            if (Res.Success == true)
            {
                decimal GestionDeCobro = Lfx.Types.Parsing.ParseCurrency(EntradaGestionDeCobro.Text);
                decimal Impuestos      = Lfx.Types.Parsing.ParseCurrency(EntradaImpuestos.Text);

                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);

                Lbl.Cajas.Caja CajaDestino = EntradaCajaDestino.Elemento as Lbl.Cajas.Caja;
                this.Cheque.Efectivizar(CajaDestino, GestionDeCobro, Impuestos);

                Trans.Commit();
            }
            return(Res);
        }
Example #4
0
        public void Efectivizar(Lbl.Cajas.Caja destino, decimal GestionDeCobro, decimal Impuestos)
        {
            Lbl.Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques);

            CajaCheques.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos, "Efectivización de cheque(s)",
                                   null, -this.Importe, this.ToString(), null, null, null);

            destino.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos,
                               "Efectivización de cheque(s)", null, this.Importe - GestionDeCobro - Impuestos,
                               this.ToString(), null, null, null);

            if (GestionDeCobro != 0)
            {
                destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestion de cobro de cheque(s)", null, -GestionDeCobro, this.ToString(), null, null, null);
            }
            if (Impuestos != 0)
            {
                destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, this.ToString(), null, null, null);
            }

            this.Estado = 10;
            qGen.Update ActualizarEstado = new qGen.Update(this.TablaDatos);
            ActualizarEstado.ColumnValues.AddWithValue("estado", this.Estado);
            ActualizarEstado.WhereClause = new qGen.Where(this.CampoId, this.Id);
            this.Connection.ExecuteNonQuery(ActualizarEstado);
        }
Example #5
0
        public void Anular()
        {
            string DescripConcepto = "Anulación";

            if (Recibo != null)
            {
                DescripConcepto = "Anulación " + Recibo.ToString();
            }

            Personas.Persona Cliente = null;
            Comprobantes.ComprobanteConArticulos Factura = null;
            if (Recibo != null)
            {
                if (Recibo.Cliente != null)
                {
                    Cliente = Recibo.Cliente;
                }
                if (Recibo.Facturas != null && Recibo.Facturas.Count > 0)
                {
                    Factura = Recibo.Facturas[0].Comprobante;
                }
            }

            switch (FormaDePago.Tipo)
            {
            case Lbl.Pagos.TiposFormasDePago.Efectivo:
                Lbl.Cajas.Caja Caja = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaDiaria);
                Caja.Movimiento(true, this.Concepto, DescripConcepto, Cliente, -this.Importe, "", Factura, this.Recibo, "");
                break;

            case Lbl.Pagos.TiposFormasDePago.ChequePropio:
                if (this.Cheque != null)
                {
                    this.Cheque.Anular();
                }
                break;

            case Lbl.Pagos.TiposFormasDePago.Tarjeta:
                if (this.Cupon != null)
                {
                    this.Cupon.Anular();
                }
                break;

            case Lbl.Pagos.TiposFormasDePago.OtroValor:
                if (this.Valor != null)
                {
                    this.Valor.Anular();
                }
                break;

            case Lbl.Pagos.TiposFormasDePago.Caja:
                this.CajaDestino.Movimiento(true, this.Concepto, DescripConcepto, Cliente, -this.Importe, null, Factura, this.Recibo, null);
                break;
            }
        }
Example #6
0
                public override Lfx.Types.OperationResult Cargar()
                {
                        Lfx.Types.OperationResult Res = base.Cargar();
                        if (Res.Success) {
                                if (Registro["id_caja"] == null)
                                        m_Caja = null;
                                else
                                        m_Caja = new Lbl.Cajas.Caja(this.Connection, System.Convert.ToInt32(Registro["id_caja"]));
                        }

                        return Res;
                }
Example #7
0
        public override void OnFiltersChanged(Lazaro.Pres.Filters.FilterCollection filters)
        {
            this.Caja     = this.Definicion.Filters["cajas_movim.id_caja"].Value as Lbl.Cajas.Caja;
            this.Cliente  = this.Definicion.Filters["cajas_movim.id_cliente"].Value as Lbl.Personas.Persona;
            this.Concepto = this.Definicion.Filters["cajas_movim.id_concepto"].Value as Lbl.Cajas.Concepto;
            TipoConcepto  = Lfx.Types.Parsing.ParseInt(this.Definicion.Filters["conceptos.grupo"].Value.ToString());
            Direccion     = Lfx.Types.Parsing.ParseInt(this.Definicion.Filters["conceptos.es"].Value.ToString());
            this.Fechas   = this.Definicion.Filters["cajas_movim.fecha"].Value as Lfx.Types.DateRange;

            BotonArqueo.Visible = !(this.Caja == null || this.Cliente != null || Concepto != null || Direccion != 0 || this.Fechas.To < System.DateTime.Now);

            base.OnFiltersChanged(filters);
        }
Example #8
0
                private void MostrarDatos()
                {
                        decimal ActivosCajas = 0;
                        decimal PasivosCajas = 0;
			
                        System.Data.DataTable Cajas = this.Connection.Select("SELECT * FROM cajas WHERE estado>0");
                        foreach(System.Data.DataRow Rw in Cajas.Rows) {
                                Lbl.Cajas.Caja Cta = new Lbl.Cajas.Caja(this.Connection, (Lfx.Data.Row)Rw);
                                decimal Saldo = Cta.ObtenerSaldo(false);
                                if (Saldo > 0)
                                        ActivosCajas += Saldo;
                                else
                                        PasivosCajas += Math.Abs(Saldo);
                        }

                        EntradaActivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(ActivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                        EntradaPasivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal ActivosStock = Connection.FieldDecimal("SELECT SUM(costo*stock_actual) FROM articulos WHERE costo>0 AND stock_actual>0");
                        EntradaActivosStock.Text = Lfx.Types.Formatting.FormatCurrency(ActivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal Activos = ActivosCajas + ActivosStock;
                        EntradaActivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Activos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal FuturosTarjetas = 0.92m * Connection.FieldDecimal("SELECT SUM(importe) FROM tarjetas_cupones WHERE estado=10 OR (estado=0 AND fecha>DATE_SUB(NOW(), INTERVAL 45 DAY))");
                                                //Tarjetas resta el 8% (estimado) de comisiones
                        decimal Facturas = Connection.FieldDecimal("SELECT SUM(total)-SUM(cancelado) FROM comprob WHERE tipo_fac IN ('FA', 'FB', 'FC', 'FE', 'FM') AND impresa>0 AND numero>0 AND anulada=0 AND fecha >= '" + Lfx.Types.Formatting.FormatDateSql(DateTime.Now.AddYears(-2)) + "'");
                        EntradaCC.Text = Lfx.Types.Formatting.FormatCurrency(Facturas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal FuturosPedidos = Connection.FieldDecimal("SELECT SUM(total-gastosenvio) FROM comprob WHERE tipo_fac='PD' AND anulada=0 AND compra>0 AND estado=50");
                        EntradaFuturosTarjetas.Text = Lfx.Types.Formatting.FormatCurrency(FuturosTarjetas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                        EntradaFuturosPedidos.Text = Lfx.Types.Formatting.FormatCurrency(FuturosPedidos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                        
                        decimal Futuros = FuturosTarjetas + FuturosPedidos + Facturas;
                        EntradaFuturosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        EntradaActivosActualesFuturos.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal PasivosCheques = Connection.FieldDecimal("SELECT SUM(importe) FROM bancos_cheques WHERE emitido>0 AND estado=0");
                        EntradaPasivosCheques.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCheques, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal PasivosStock = Math.Abs(Connection.FieldDecimal("SELECT SUM(costo*stock_actual) FROM articulos WHERE costo>0 AND stock_actual<0"));
                        EntradaPasivosStock.Text = Lfx.Types.Formatting.FormatCurrency(PasivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        decimal Pasivos = PasivosCajas + PasivosCheques + PasivosStock;
                        EntradaPasivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

                        EntradaPatrimonioActual.Text = Lfx.Types.Formatting.FormatCurrency(Activos - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                        EntradaPatrimonioFuturo.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
                }
Example #9
0
        public override void ActualizarControl()
        {
            Lbl.Cajas.Caja Caja = this.Elemento as Lbl.Cajas.Caja;

            EntradaTitular.Text       = Caja.Titular;
            EntradaTipo.TextKey       = ((int)(Caja.Tipo)).ToString();
            EntradaNumero.Text        = Caja.Numero;
            EntradaBanco.Elemento     = Caja.Banco;
            EntradaMoneda.Elemento    = Caja.Moneda;
            EntradaNombre.Text        = Caja.Nombre;
            EntradaClaveBancaria.Text = Caja.ClaveBancaria;
            EntradaEstado.TextKey     = Caja.Estado.ToString();

            base.ActualizarControl();
        }
Example #10
0
        public void Pagar(Lbl.Cajas.Caja cajaOrigen)
        {
            cajaOrigen.Movimiento(true, this.Concepto,
                                  this.Concepto.Nombre,
                                  this.Cliente, -this.Importe,
                                  "Pago de " + this.ToString(),
                                  null,
                                  this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago,
                                  null);

            qGen.Update ActualizarEstado = new qGen.Update(this.TablaDatos);
            ActualizarEstado.ColumnValues.AddWithValue("estado", 10);
            ActualizarEstado.WhereClause = new qGen.Where(this.CampoId, this.Id);
            this.Connection.ExecuteNonQuery(ActualizarEstado);
        }
Example #11
0
        public override void ActualizarElemento()
        {
            Lbl.Cajas.Caja Caja = this.Elemento as Lbl.Cajas.Caja;

            Caja.Nombre        = EntradaNombre.Text;
            Caja.Numero        = EntradaNumero.Text;
            Caja.Titular       = EntradaTitular.Text;
            Caja.Banco         = EntradaBanco.Elemento as Lbl.Bancos.Banco;
            Caja.Moneda        = EntradaMoneda.Elemento as Lbl.Entidades.Moneda;
            Caja.Tipo          = (Lbl.Cajas.TiposDeCaja)(Lfx.Types.Parsing.ParseInt(EntradaTipo.TextKey));
            Caja.ClaveBancaria = EntradaClaveBancaria.Text;
            Caja.Estado        = Lfx.Types.Parsing.ParseInt(EntradaEstado.TextKey);

            base.ActualizarElemento();
        }
Example #12
0
        public override Lfx.Types.OperationResult Ok()
        {
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
            if (EntradaCajaOrigen.ValueInt <= 0)
            {
                Res.Success  = false;
                Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine;
            }
            if (EntradaTotal.ValueDecimal <= 0)
            {
                Res.Success  = false;
                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
            }
            if (Res.Success == true)
            {
                decimal Impuestos = EntradaImpuestos.ValueDecimal;

                IDbTransaction Trans = null;
                if (this.Connection.InTransaction == false)
                {
                    Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                }

                string ChequesNum = null;
                System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")");
                Lbl.Cajas.Caja        CajaOrigen   = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt);
                foreach (System.Data.DataRow RowCheque in TablaCheques.Rows)
                {
                    Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque);
                    Cheque.Pagar(CajaOrigen);
                }

                if (Impuestos != 0)
                {
                    CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030),
                                          "Impuestos de cheque(s)",
                                          null,
                                          -Impuestos,
                                          "Cheques Nº " + ChequesNum, null, null, null);
                }

                if (Trans != null)
                {
                    Trans.Commit();
                }
            }
            return(Res);
        }
Example #13
0
        public override Lfx.Types.OperationResult Cargar()
        {
            Lfx.Types.OperationResult Res = base.Cargar();
            if (Res.Success)
            {
                if (Registro["id_caja"] == null)
                {
                    m_Caja = null;
                }
                else
                {
                    m_Caja = new Lbl.Cajas.Caja(this.Connection, System.Convert.ToInt32(Registro["id_caja"]));
                }
            }

            return(Res);
        }
Example #14
0
        public void ProbarFacturaBSinIvaEnEfectivo()
        {
            var Fac = new Lbl.Comprobantes.Factura(TestSetup.Connection);

            Fac.Crear();
            Fac.Vendedor    = Administrador;
            Fac.Cliente     = SocioConsFinalFueguino;
            Fac.FormaDePago = Efectivo;
            Fac.Tipo        = TipoB;

            var Det = Test.Entity.Comprobantes.DetalleArticuloTest.ObtenerDetalleEjemplo(false, Fac.Cliente.ObtenerSituacionIva() != Impuestos.SituacionIva.Exento);

            Fac.Articulos.Add(Det);
            Fac.Descuento = 5;

            Assert.AreEqual(437m, Fac.Total, "Total debe ser 437");

            Fac.Guardar();

            var Ctrl = new Lazaro.Base.Controller.ComprobanteController();

            Ctrl.Imprimir(Fac, this.ObtenerImpresoraNula());

            // Verificar importes de la factura

            var FacGuardada = new Lbl.Comprobantes.Factura(TestSetup.Connection, Fac.Id);

            Assert.AreEqual(5m, FacGuardada.Descuento, "Descuento debe ser 5");
            Assert.AreEqual(437m, FacGuardada.Total, "Total debe ser 437");
            Assert.AreEqual(23m, FacGuardada.ImporteDescuentos, "ImporteDescuentos debe ser 23");
            Assert.AreEqual(437m, FacGuardada.ImporteCancelado, "ImporteCancelado debe ser 437");
            Assert.AreEqual(0m, FacGuardada.ImporteIvaDiscriminado, "ImporteIvaDiscriminado debe ser 0");
            Assert.AreEqual(0m, FacGuardada.ImporteIvaDiscriminadoFinal, "ImporteIvaDiscriminadoFinal debe ser 0");
            Assert.AreEqual(0m, FacGuardada.ImporteIva, "ImporteIva debe ser 0");
            Assert.AreEqual(0m, FacGuardada.ImporteIvaFinal, "ImporteIvaFinal debe ser 0");

            var CajaEfectivo = new Lbl.Cajas.Caja(TestSetup.Connection, 999);
            var UltMovim     = CajaEfectivo.ObtenerUltimoMovimiento();

            Assert.AreEqual(437m, UltMovim.Importe, "El último movimiento en efectivo debe ser 437");
        }
Example #15
0
        public override Lfx.Types.OperationResult Guardar()
        {
            qGen.IStatement Comando;
            if (this.Existe)
            {
                Comando             = new qGen.Update(this.TablaDatos);
                Comando.WhereClause = new qGen.Where(this.CampoId, this.Id);
            }
            else
            {
                Comando = new qGen.Insert(this.TablaDatos);
            }

            Comando.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()"));
            if (this.Concepto == null)
            {
                Comando.ColumnValues.AddWithValue("id_concepto", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_concepto", this.Concepto.Id);
            }

            if (this.ConceptoTexto == null || this.ConceptoTexto.Length == 0)
            {
                if (this.Concepto == null)
                {
                    Comando.ColumnValues.AddWithValue("concepto", "");
                }
                else
                {
                    Comando.ColumnValues.AddWithValue("concepto", this.Concepto.Nombre);
                }
            }
            else
            {
                Comando.ColumnValues.AddWithValue("concepto", this.ConceptoTexto);
            }

            if (this.Banco == null)
            {
                Comando.ColumnValues.AddWithValue("id_banco", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_banco", this.Banco.Id);
            }

            if (this.Chequera == null)
            {
                Comando.ColumnValues.AddWithValue("id_chequera", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_chequera", this.Chequera.Id);
            }

            Comando.ColumnValues.AddWithValue("numero", this.Numero);
            Comando.ColumnValues.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual);

            if (this.ReciboCobro == null)
            {
                Comando.ColumnValues.AddWithValue("id_recibo", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_recibo", this.ReciboCobro.Id);
            }

            if (this.ReciboPago == null)
            {
                Comando.ColumnValues.AddWithValue("id_recibo_pago", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_recibo_pago", this.ReciboPago.Id);
            }

            if (this.Cliente == null && this.ReciboCobro != null)
            {
                this.Cliente = this.ReciboCobro.Cliente;
            }
            if (this.Cliente == null && this.ReciboPago != null)
            {
                this.Cliente = this.ReciboPago.Cliente;
            }

            if (this.Cliente == null)
            {
                Comando.ColumnValues.AddWithValue("id_cliente", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_cliente", this.Cliente.Id);
            }

            if (this.Factura == null)
            {
                Comando.ColumnValues.AddWithValue("id_comprob", null);
            }
            else
            {
                Comando.ColumnValues.AddWithValue("id_comprob", this.Factura.Id);
            }

            if (this.Emitido)
            {
                Comando.ColumnValues.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2));
            }
            else
            {
                Comando.ColumnValues.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2) + " emitido por " + this.Emisor);
            }
            Comando.ColumnValues.AddWithValue("importe", this.Importe);
            Comando.ColumnValues.AddWithValue("fechaemision", this.FechaEmision);
            Comando.ColumnValues.AddWithValue("emitidopor", this.Emisor);
            Comando.ColumnValues.AddWithValue("emitido", this.Emitido ? 1 : 0);
            Comando.ColumnValues.AddWithValue("estado", this.Estado);
            Comando.ColumnValues.AddWithValue("fechacobro", this.FechaCobro);
            Comando.ColumnValues.AddWithValue("obs", this.Obs);

            this.AgregarTags(Comando);

            this.Connection.ExecuteNonQuery(Comando);

            if (this.Chequera != null)
            {
                qGen.Update ActualizarChequeras = new qGen.Update("chequeras");
                ActualizarChequeras.ColumnValues.AddWithValue("cheques_emitidos", new qGen.SqlExpression("cheques_emitidos+1"));
                ActualizarChequeras.WhereClause = new qGen.Where("id_chequera", this.Chequera.Id);
                this.Connection.ExecuteNonQuery(ActualizarChequeras);
            }

            if (this.Existe == false && this.Emitido == false)
            {
                //Asiento en la cuenta cheques, sólo para cheques de cobro
                Cajas.Caja           CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques);
                Lbl.Personas.Persona UsarCliente = this.Cliente;
                if (UsarCliente == null && this.Factura != null)
                {
                    UsarCliente = this.Factura.Cliente;
                }
                if (UsarCliente == null && this.ReciboCobro != null)
                {
                    UsarCliente = this.ReciboCobro.Cliente;
                }
                if (UsarCliente == null && this.ReciboPago != null)
                {
                    UsarCliente = this.ReciboPago.Cliente;
                }
                CajaCheques.Movimiento(true,
                                       this.Concepto, this.ConceptoTexto,
                                       UsarCliente,
                                       this.ReciboPago != null ? -this.Importe : this.Importe,
                                       this.ToString(),
                                       this.Factura,
                                       this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago,
                                       null);
            }

            return(base.Guardar());
        }
Example #16
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();
        }
Example #17
0
 public CajaController(Lazaro.Orm.IEntityManager em, Lbl.Cajas.Caja caja)
 {
     this.Em         = em;
     this.Connection = em.Connection;
     this.Caja       = caja;
 }
Example #18
0
 public override void Crear()
 {
     base.Crear();
     m_Caja = null;
 }
Example #19
0
                public override void OnLoad()
                {
                        if (this.Registro != null) {
                                if (this.GetFieldValue<int>("id_banco") > 0)
                                        this.Banco = new Bancos.Banco(this.Connection, this.GetFieldValue<int>("id_banco"));
                                else
                                        this.Banco = null;

                                if (this.GetFieldValue<int>("id_caja") > 0)
                                        this.Caja = new Cajas.Caja(this.Connection, this.GetFieldValue<int>("id_caja"));
                                else
                                        this.Caja = null;

                                if (this.GetFieldValue<int>("id_sucursal") > 0)
                                        this.Sucursal = new Lbl.Entidades.Sucursal(this.Connection, this.GetFieldValue<int>("id_sucursal"));
                                else
                                        this.Sucursal = null;
                        }
                        base.OnLoad();
                }
Example #20
0
                public void Efectivizar(Lbl.Cajas.Caja destino, decimal GestionDeCobro, decimal Impuestos)
                {
                        Lbl.Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques);

                        CajaCheques.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos, "Efectivización de cheque(s)",
                                                null, -this.Importe, this.ToString(), null, null, null);

                        destino.Movimiento(true, Lbl.Cajas.Concepto.AjustesYMovimientos,
                                "Efectivización de cheque(s)", null, this.Importe - GestionDeCobro - Impuestos,
                                this.ToString(), null, null, null);

                        if (GestionDeCobro != 0)
                                destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 24010), "Gestion de cobro de cheque(s)", null, -GestionDeCobro, this.ToString(), null, null, null);
                        if (Impuestos != 0)
                                destino.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030), "Impuestos de cheque(s)", null, -Impuestos, this.ToString(), null, null, null);

                        this.Estado = 10;
                        qGen.Update ActualizarEstado = new qGen.Update(this.TablaDatos);
                        ActualizarEstado.Fields.AddWithValue("estado", this.Estado);
                        ActualizarEstado.WhereClause = new qGen.Where(this.CampoId, this.Id);
                        this.Connection.Execute(ActualizarEstado);
                }
                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;
                                }
                        }
                }
Example #22
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();
                }
Example #23
0
                private void EntradaOrigenDestino_TextChanged(object sender, System.EventArgs e)
                {
                        CajaOrigen = EntradaOrigen.Elemento as Lbl.Cajas.Caja;
                        CajaDestino = EntradaDestino.Elemento as Lbl.Cajas.Caja;
                        if (CajaOrigen == null || CajaDestino == null)
                                return;

                        MonedaOrigen = CajaOrigen.ObtenerMoneda();
                        MonedaDestino = CajaDestino.ObtenerMoneda();

                        if (MonedaOrigen != null && MonedaDestino != null) {
                                EntradaImporte.Prefijo = MonedaOrigen.Simbolo;
                                EntradaImporteDestino.Prefijo = MonedaDestino.Simbolo;
                                if (MonedaDestino.Cotizacion != MonedaOrigen.Cotizacion) {
                                        EntradaImporteDestino.ValueDecimal = EntradaImporte.ValueDecimal * MonedaDestino.Cotizacion / MonedaOrigen.Cotizacion;
                                        EntradaImporteDestino.Visible = true;
                                        EtiquetaImporteDestino.Visible = true;
                                        // TODO: EntradaImporteDestino.ShowBalloon("Se realiza una conversión de moneda según la cotización " + System.Convert.ToString(MonedaOrigen["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaOrigen["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales) + " = " + System.Convert.ToString(MonedaDestino["signo"]) + " " + Lfx.Types.Formatting.FormatCurrency(System.Convert.ToDecimal(MonedaDestino["cotizacion"]), Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales));
                                } else {
                                        EntradaImporteDestino.Visible = false;
                                        EtiquetaImporteDestino.Visible = false;
                                }
                        } else {
                                EntradaImporteDestino.Visible = false;
                                EtiquetaImporteDestino.Visible = false;
                        }
                }
Example #24
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();
                }
Example #25
0
        private void MostrarDatos()
        {
            decimal ActivosCajas = 0;
            decimal PasivosCajas = 0;

            System.Data.DataTable Cajas = this.Connection.Select("SELECT * FROM cajas WHERE estado>0");
            foreach (System.Data.DataRow Rw in Cajas.Rows)
            {
                Lbl.Cajas.Caja Cta   = new Lbl.Cajas.Caja(this.Connection, (Lfx.Data.Row)Rw);
                decimal        Saldo = Cta.ObtenerSaldo(false);
                if (Saldo > 0)
                {
                    ActivosCajas += Saldo;
                }
                else
                {
                    PasivosCajas += Math.Abs(Saldo);
                }
            }

            EntradaActivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(ActivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
            EntradaPasivosCajas.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCajas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal ActivosStock = Connection.FieldDecimal("SELECT SUM(IFNULL(monedas.cotizacion, 1)*costo*stock_actual) FROM articulos JOIN monedas ON monedas.id_moneda=articulos.id_moneda WHERE costo>0 AND stock_actual>0");

            EntradaActivosStock.Text = Lfx.Types.Formatting.FormatCurrency(ActivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal Activos = ActivosCajas + ActivosStock;

            EntradaActivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Activos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal FuturosTarjetas = 0.92m * Connection.FieldDecimal("SELECT SUM(importe) FROM tarjetas_cupones WHERE estado=10 OR (estado=0 AND fecha>DATE_SUB(NOW(), INTERVAL 45 DAY))");
            //Tarjetas resta el 8% (estimado) de comisiones
            decimal Facturas = Connection.FieldDecimal("SELECT SUM(total)-SUM(cancelado) FROM comprob WHERE tipo_fac IN ('FA', 'FB', 'FC', 'FE', 'FM') AND impresa>0 AND numero>0 AND anulada=0 AND fecha >= '" + Lfx.Types.Formatting.FormatDateSql(DateTime.Now.AddYears(-2)) + "'");

            EntradaCC.Text = Lfx.Types.Formatting.FormatCurrency(Facturas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal FuturosPedidos = Connection.FieldDecimal("SELECT SUM(total-gastosenvio) FROM comprob WHERE tipo_fac='PD' AND anulada=0 AND compra>0 AND estado=50");

            EntradaFuturosTarjetas.Text = Lfx.Types.Formatting.FormatCurrency(FuturosTarjetas, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
            EntradaFuturosPedidos.Text  = Lfx.Types.Formatting.FormatCurrency(FuturosPedidos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal Futuros = FuturosTarjetas + FuturosPedidos + Facturas;

            EntradaFuturosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            EntradaActivosActualesFuturos.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal PasivosCheques = Connection.FieldDecimal("SELECT SUM(importe) FROM bancos_cheques WHERE emitido>0 AND estado=0");

            EntradaPasivosCheques.Text = Lfx.Types.Formatting.FormatCurrency(PasivosCheques, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal PasivosStock = Math.Abs(Connection.FieldDecimal("SELECT SUM(IFNULL(monedas.cotizacion, 1)*costo*stock_actual) FROM articulos JOIN monedas ON monedas.id_moneda=articulos.id_moneda WHERE costo>0 AND stock_actual<0"));

            EntradaPasivosStock.Text = Lfx.Types.Formatting.FormatCurrency(PasivosStock, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            decimal Pasivos = PasivosCajas + PasivosCheques + PasivosStock;

            EntradaPasivosSubtotal.Text = Lfx.Types.Formatting.FormatCurrency(Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);

            EntradaPatrimonioActual.Text = Lfx.Types.Formatting.FormatCurrency(Activos - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
            EntradaPatrimonioFuturo.Text = Lfx.Types.Formatting.FormatCurrency(Activos + Futuros - Pasivos, Lfx.Workspace.Master.CurrentConfig.Moneda.Decimales);
        }
Example #26
0
		public override Lfx.Types.OperationResult Guardar()
		{
			qGen.TableCommand Comando;
                        if (this.Existe) {
				Comando = new qGen.Update(this.Connection, this.TablaDatos);
				Comando.WhereClause = new qGen.Where(this.CampoId, this.Id);
			} else {
				Comando = new qGen.Insert(this.Connection, this.TablaDatos);
			}

			Comando.Fields.AddWithValue("fecha", qGen.SqlFunctions.Now);
                        if (this.Concepto == null)
                                Comando.Fields.AddWithValue("id_concepto", null);
                        else
                                Comando.Fields.AddWithValue("id_concepto", this.Concepto.Id);

                        if (this.ConceptoTexto == null || this.ConceptoTexto.Length == 0) {
				if (this.Concepto == null)
					Comando.Fields.AddWithValue("concepto", "");
				else
                                	Comando.Fields.AddWithValue("concepto", this.Concepto.Nombre);
			} else {
                                Comando.Fields.AddWithValue("concepto", this.ConceptoTexto);
			}

                        if (this.Banco == null)
                                Comando.Fields.AddWithValue("id_banco", null);
                        else
                                Comando.Fields.AddWithValue("id_banco", this.Banco.Id);

                        if (this.Chequera == null)
                                Comando.Fields.AddWithValue("id_chequera", null);
                        else
                                Comando.Fields.AddWithValue("id_chequera", this.Chequera.Id);

			Comando.Fields.AddWithValue("numero", this.Numero);
			Comando.Fields.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual);

                        if (this.ReciboCobro == null)
                                Comando.Fields.AddWithValue("id_recibo", null);
                        else
                                Comando.Fields.AddWithValue("id_recibo", this.ReciboCobro.Id);

                        if (this.ReciboPago == null)
                                Comando.Fields.AddWithValue("id_recibo_pago", null);
                        else
                                Comando.Fields.AddWithValue("id_recibo_pago", this.ReciboPago.Id);

                        if (this.Cliente == null && this.ReciboCobro != null)
                                this.Cliente = this.ReciboCobro.Cliente;
                        if (this.Cliente == null && this.ReciboPago != null)
                                this.Cliente = this.ReciboPago.Cliente;

                        if (this.Cliente == null)
                                Comando.Fields.AddWithValue("id_cliente", null);
                        else
                                Comando.Fields.AddWithValue("id_cliente", this.Cliente.Id);
                        
                        if (this.Factura == null)
                                Comando.Fields.AddWithValue("id_comprob", null);
                        else
                                Comando.Fields.AddWithValue("id_comprob", this.Factura.Id);

                        if (this.Emitido)
                                Comando.Fields.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2));
                        else
                                Comando.Fields.AddWithValue("nombre", "Nº " + this.Numero + " por " + Lbl.Sys.Config.Moneda.Simbolo + " " + Lfx.Types.Formatting.FormatCurrency(this.Importe, 2) + " emitido por " + this.Emisor);
			Comando.Fields.AddWithValue("importe", this.Importe);
			Comando.Fields.AddWithValue("fechaemision", this.FechaEmision);
			Comando.Fields.AddWithValue("emitidopor", this.Emisor);
                        Comando.Fields.AddWithValue("emitido", this.Emitido ? 1 : 0);
                        Comando.Fields.AddWithValue("estado", this.Estado);
			Comando.Fields.AddWithValue("fechacobro", this.FechaCobro);
			Comando.Fields.AddWithValue("obs", this.Obs);

			this.AgregarTags(Comando);

			this.Connection.Execute(Comando);

                        if (this.Chequera != null) {
                                qGen.Update ActualizarChequeras = new qGen.Update("chequeras");
                                ActualizarChequeras.Fields.AddWithValue("cheques_emitidos", new qGen.SqlExpression("cheques_emitidos+1"));
                                ActualizarChequeras.WhereClause = new qGen.Where("id_chequera", this.Chequera.Id);
                                this.Connection.Execute(ActualizarChequeras);
                        }

                        if (this.Existe == false && this.Emitido == false) {
                                //Asiento en la cuenta cheques, sólo para cheques de cobro
                                Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques);
                                Lbl.Personas.Persona UsarCliente = this.Cliente;
                                if (UsarCliente == null && this.Factura != null)
                                        UsarCliente = this.Factura.Cliente;
                                if (UsarCliente == null && this.ReciboCobro != null)
                                        UsarCliente = this.ReciboCobro.Cliente;
                                if (UsarCliente == null && this.ReciboPago != null)
                                        UsarCliente = this.ReciboPago.Cliente;
                                CajaCheques.Movimiento(true, 
                                        this.Concepto, this.ConceptoTexto, 
                                        UsarCliente, 
                                        this.ReciboPago != null ? -this.Importe : this.Importe,
                                        this.ToString(), 
                                        this.Factura, 
                                        this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, 
                                        null);
                        }

                        return base.Guardar();
		}
Example #27
0
        public void Anular()
        {
            if (this.Existe && this.Anulado == false)
            {
                if (this.Estado == 11)
                {
                    // Cheque entregado, lo marco de nuevo como activo
                    this.Estado = 0;
                }
                else
                {
                    // Cheque activo, lo marco como anulado
                    this.Estado = 90;
                }

                // Marco el recibo como anulado
                qGen.Update Act = new qGen.Update(this.TablaDatos);
                Act.ColumnValues.AddWithValue("estado", this.Estado);
                Act.WhereClause = new qGen.Where(this.CampoId, this.Id);
                this.Connection.ExecuteNonQuery(Act);

                if (this.Emitido == false)
                {
                    //Asiento en la cuenta cheques, sólo para cheques de cobro
                    Cajas.Caja           CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques);
                    Lbl.Personas.Persona UsarCliente = this.Cliente;
                    if (UsarCliente == null && this.Factura != null)
                    {
                        UsarCliente = this.Factura.Cliente;
                    }
                    if (UsarCliente == null && this.ReciboCobro != null)
                    {
                        UsarCliente = this.ReciboCobro.Cliente;
                    }
                    if (UsarCliente == null && this.ReciboPago != null)
                    {
                        UsarCliente = this.ReciboPago.Cliente;
                    }

                    string TextoConcepto;
                    if (this.ReciboCobro != null && string.IsNullOrEmpty(this.ReciboCobro.ConceptoTexto) == false)
                    {
                        TextoConcepto = this.ReciboCobro.ConceptoTexto;
                    }
                    else if (this.ReciboPago != null && string.IsNullOrEmpty(this.ReciboPago.ConceptoTexto) == false)
                    {
                        TextoConcepto = this.ReciboPago.ConceptoTexto;
                    }
                    else if (string.IsNullOrEmpty(this.ConceptoTexto) == false)
                    {
                        TextoConcepto = this.ConceptoTexto;
                    }
                    else
                    {
                        TextoConcepto = this.ToString();
                    }

                    CajaCheques.Movimiento(true,
                                           this.Concepto,
                                           "Anulación. " + TextoConcepto,
                                           UsarCliente,
                                           this.Estado == 1 ? this.Importe : -this.Importe,
                                           null,
                                           this.Factura,
                                           this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago,
                                           null);
                }

                Lbl.Sys.Config.ActionLog(this.Connection, Sys.Log.Acciones.Delete, this, null);
            }
        }
Example #28
0
 public override void Crear()
 {
         base.Crear();
         m_Caja = null;
 }
Example #29
0
                public override Lfx.Types.OperationResult Ok()
                {
                        Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();
                        if (EntradaCajaOrigen.ValueInt <= 0) {
                                Res.Success = false;
                                Res.Message += "Por favor seleccione la cuenta de origen." + Environment.NewLine;
                        }
                        if (EntradaTotal.ValueDecimal <= 0) {
                                Res.Success = false;
                                Res.Message += "El importe total debe ser mayor o igual a cero." + Environment.NewLine;
                        }
                        if (Res.Success == true) {
                                decimal Impuestos = EntradaImpuestos.ValueDecimal;

                                IDbTransaction Trans = null;
                                if (this.Connection.InTransaction == false) {
                                        Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                                }

                                string ChequesNum = null;
                                System.Data.DataTable TablaCheques = Connection.Select("SELECT * FROM bancos_cheques WHERE id_cheque IN (" + ChequesIds + ")");
                                Lbl.Cajas.Caja CajaOrigen = new Lbl.Cajas.Caja(Connection, EntradaCajaOrigen.ValueInt);
                                foreach (System.Data.DataRow RowCheque in TablaCheques.Rows) {
                                        Lbl.Bancos.Cheque Cheque = new Lbl.Bancos.Cheque(this.Connection, (Lfx.Data.Row)RowCheque);
                                        Cheque.Pagar(CajaOrigen);
                                }

                                if (Impuestos != 0)
                                        CajaOrigen.Movimiento(true, new Lbl.Cajas.Concepto(this.Connection, 23030),
                                                "Impuestos de cheque(s)",
                                                null,
                                                -Impuestos,
                                                "Cheques Nº " + ChequesNum, null, null, null);

                                if (Trans != null) {
                                        Trans.Commit();
                                }
                        }
                        return Res;
                }
Example #30
0
                public void Anular()
                {
                        if (this.Existe && this.Anulado == false) {
                                if (this.Estado == 11)
                                        // Cheque entregado, lo marco de nuevo como activo
                                        this.Estado = 0;
                                else
                                        // Cheque activo, lo marco como anulado
                                        this.Estado = 90;

                                // Marco el recibo como anulado
                                qGen.Update Act = new qGen.Update(this.TablaDatos);
                                Act.Fields.AddWithValue("estado", this.Estado);
                                Act.WhereClause = new qGen.Where(this.CampoId, this.Id);
                                this.Connection.Execute(Act);

                                if (this.Emitido == false) {
                                        //Asiento en la cuenta cheques, sólo para cheques de cobro
                                        Cajas.Caja CajaCheques = new Lbl.Cajas.Caja(this.Connection, Lfx.Workspace.Master.CurrentConfig.Empresa.CajaCheques);
                                        Lbl.Personas.Persona UsarCliente = this.Cliente;
                                        if (UsarCliente == null && this.Factura != null)
                                                UsarCliente = this.Factura.Cliente;
                                        if (UsarCliente == null && this.ReciboCobro != null)
                                                UsarCliente = this.ReciboCobro.Cliente;
                                        if (UsarCliente == null && this.ReciboPago != null)
                                                UsarCliente = this.ReciboPago.Cliente;

                                        string TextoConcepto;
                                        if (this.ReciboCobro != null && string.IsNullOrEmpty(this.ReciboCobro.ConceptoTexto) == false)
                                                TextoConcepto = this.ReciboCobro.ConceptoTexto;
                                        else if (this.ReciboPago != null && string.IsNullOrEmpty(this.ReciboPago.ConceptoTexto) == false)
                                                TextoConcepto = this.ReciboPago.ConceptoTexto;
                                        else if (string.IsNullOrEmpty(this.ConceptoTexto) == false)
                                                TextoConcepto = this.ConceptoTexto;
                                        else
                                                TextoConcepto = this.ToString();

                                        CajaCheques.Movimiento(true, 
                                                this.Concepto, 
                                                "Anulación. " + TextoConcepto, 
                                                UsarCliente,
                                                this.Estado == 1 ? this.Importe : -this.Importe, 
                                                null, 
                                                this.Factura, 
                                                this.ReciboCobro != null ? this.ReciboCobro : this.ReciboPago, 
                                                null);
                                }

                                Lbl.Sys.Config.ActionLog(this.Connection, Sys.Log.Acciones.Delete, this, null);
                        }
                }
Example #31
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());
        }
Example #32
0
                public override void OnFiltersChanged(Lazaro.Pres.Filters.FilterCollection filters)
                {
                        this.Caja = this.Definicion.Filters["cajas_movim.id_caja"].Value as Lbl.Cajas.Caja;
                        this.Cliente = this.Definicion.Filters["cajas_movim.id_cliente"].Value as Lbl.Personas.Persona;
                        this.Concepto = this.Definicion.Filters["cajas_movim.id_concepto"].Value as Lbl.Cajas.Concepto;
                        TipoConcepto = Lfx.Types.Parsing.ParseInt(this.Definicion.Filters["conceptos.grupo"].Value.ToString());
                        Direccion = Lfx.Types.Parsing.ParseInt(this.Definicion.Filters["conceptos.es"].Value.ToString());
                        this.Fechas = this.Definicion.Filters["cajas_movim.fecha"].Value as Lfx.Types.DateRange;

                        BotonArqueo.Visible = !(this.Caja == null || this.Cliente != null || Concepto != null || Direccion != 0 || this.Fechas.To < System.DateTime.Now);

                        base.OnFiltersChanged(filters);
                }