Exemple #1
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");
        }
Exemple #2
0
        public void ProbarFacturaBConIvaEnCtaCte()
        {
            var Fac = new Lbl.Comprobantes.Factura(TestSetup.Connection);

            Fac.Crear();
            Fac.Vendedor    = Administrador;
            Fac.Cliente     = SocioConsFinalPortenio;
            Fac.FormaDePago = CtaCte;
            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(528.77m, Fac.Total, "Total debe ser 528.77");

            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(528.77m, FacGuardada.Total, "Total debe ser 528.77");
            Assert.AreEqual(27.83m, FacGuardada.ImporteDescuentos, "ImporteDescuentos debe ser 27.83");
            Assert.AreEqual(0m, FacGuardada.ImporteCancelado, "ImporteCancelado debe ser 0");
            Assert.AreEqual(0m, FacGuardada.ImporteIvaDiscriminado, "ImporteIvaDiscriminado debe ser 0");
            Assert.AreEqual(0m, FacGuardada.ImporteIvaDiscriminadoFinal, "ImporteIvaDiscriminadoFinal debe ser 0");
            Assert.AreEqual(96.6m, FacGuardada.ImporteIva, "ImporteIva debe ser 96.60");
            Assert.AreEqual(91.77m, FacGuardada.ImporteIvaFinal, "ImporteIvaFinal debe ser 91.77");

            var UltMovim = Fac.Cliente.CuentaCorriente.ObtenerUltimoMovimiento();

            Assert.AreEqual(528.77m, UltMovim.Importe, "El movimiento en la cuenta corriente debe ser por el total de la factura.");
        }
        public void ProbarImportesConIvaDiscriminado()
        {
            var FacturaA = new Lbl.Comprobantes.Factura(TestSetup.Connection);

            FacturaA.Tipo = new Lbl.Comprobantes.Tipo(TestSetup.Connection, "FA");

            var Det = ObtenerDetalleEjemplo(true, true);

            Det.ElementoPadre = FacturaA;

            Assert.IsTrue(Det.ComprobanteDiscriminaIva(), "El comprobante no debe discriminar IVA");

            // Esto debería ser igual para IVA discriminado y no discriminado
            Assert.AreEqual(460m, Det.ImporteSinIvaFinal, "ImporteSinIvaFinal debe ser 460");
            Assert.AreEqual(111.32m, Det.ImporteUnitarioConIvaFinal, "ImporteUnitarioConIvaFinal debe ser 111.32");
            Assert.AreEqual(19.32m, Det.ImporteIvaUnitarioFinal, "ImporteIvaUnitarioFinal debe ser 19.32");
            Assert.AreEqual(92m, Det.ImporteUnitarioSinIvaFinal, "ImporteUnitarioSinIvaFinal debe ser 92");

            Assert.AreEqual(556.6m, Det.ImporteConIvaFinalAlicuota(1), "ImporteConIvaFinalAlicuota(1) debe ser 556.6");
            Assert.AreEqual(0m, Det.ImporteConIvaFinalAlicuota(2), "ImporteConIvaFinalAlicuota(2) debe ser 0");
            Assert.AreEqual(96.6m, Det.ImporteIvaFinalAlicuota(1), "ImporteIvaFinalAlicuota(1) debe ser 96.6");
            Assert.AreEqual(0m, Det.ImporteIvaFinalAlicuota(2), "ImporteIvaFinalAlicuota(2) debe ser 0");
            Assert.AreEqual(460m, Det.ImporteSinIvaFinalAlicuota(1), "ImporteSinIvaFinalAlicuota(1) debe ser 460");
            Assert.AreEqual(0m, Det.ImporteSinIvaFinalAlicuota(2), "ImporteSinIvaFinalAlicuota(2) debe ser 0");

            // Esto debería variar para IVA discriminado y no discriminado
            Assert.AreEqual(92m, Det.ImporteUnitarioFinal, "ImporteUnitarioFinal debe ser 111.32");
            Assert.AreEqual(100m, Det.ImporteUnitario, "ImporteUnitario debe ser 100");

            Assert.AreEqual(92m, Det.ImporteUnitarioFinalAImprimir, "ImporteAImprimir debe ser 92");
            Assert.AreEqual(460m, Det.ImporteAImprimir, "ImporteAImprimir debe ser 460");

            Assert.AreEqual(96.6m, Det.ImporteIvaDiscriminadoFinal, "ImporteIvaDiscriminadoFinal debe ser 96.6");
            Assert.AreEqual(121m, Det.ImporteUnitarioConIva, "ImporteUnitarioConIvaDiscriminado debe ser 121");
            Assert.AreEqual(21m, Det.ImporteUnitarioIvaDiscriminado, "ImporteUnitarioIvaDiscriminado debe ser 21");
        }
Exemple #4
0
        private Lfx.Types.OperationResult Facturar()
        {
            Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("¿Desea guardar los cambios realizados y generar una factura a partir de esta tarea?", "Facturar");
            if (Pregunta.ShowDialog() != DialogResult.OK)
            {
                return(new Lfx.Types.CancelOperationResult());
            }

            if (EntradaEstado.ValueInt < 50)
            {
                EntradaEstado.ValueInt = 50;
            }

            Lfx.Types.OperationResult Res = this.Save();
            if (Res.Success == false)
            {
                return(Res);
            }

            Lbl.Tareas.Tarea Tarea = this.Elemento as Lbl.Tareas.Tarea;
            Lbl.Comprobantes.ComprobanteFacturable Factura;

            Lfx.Data.Connection ConnFacturaNueva = Lfx.Workspace.Master.GetNewConnection("Convertir tarea en factura");

            if (Tarea.Factura != null && Tarea.Factura.Anulado == false)
            {
                // Ya fue facturada... lo muestro
                Factura = Tarea.Factura;
            }
            else
            {
                // No tiene comprobante, lo creo
                Factura = new Lbl.Comprobantes.Factura(ConnFacturaNueva);

                Factura.Crear();
                Factura.Cliente            = EntradaCliente.Elemento as Lbl.Personas.Persona;
                Factura.Cliente.Connection = ConnFacturaNueva;
                Factura.Tipo                = Factura.Cliente.ObtenerTipoComprobante();
                Factura.Tipo.Connection     = ConnFacturaNueva;
                Factura.Vendedor            = EntradaEncargado.Elemento as Lbl.Personas.Persona;
                Factura.Vendedor.Connection = ConnFacturaNueva;
                Factura.Obs = EntradaTarea.TextDetail + " s/" + this.Elemento.ToString();
                if (Tarea.Articulos.Count > 0)
                {
                    Factura.Articulos.AddRange(Tarea.Articulos);
                }
                else if (Tarea.Presupuesto != null && Tarea.Presupuesto.Articulos.Count > 0)
                {
                    Factura.Articulos.AddRange(Tarea.Presupuesto.Articulos);
                    Factura.Descuento = Tarea.Presupuesto.Descuento;
                }

                if (EntradaImportePresupuesto.ValueDecimal > 0)
                {
                    Lbl.Comprobantes.DetalleArticulo Art = new Lbl.Comprobantes.DetalleArticulo(Factura);

                    Art.Nombre   = this.Elemento.ToString();
                    Art.Unitario = EntradaImportePresupuesto.ValueDecimal;
                    Art.Cantidad = 1;

                    Factura.Articulos.Add(Art);
                }
            }

            Lfc.FormularioEdicion FormularioFactura = Lfc.Instanciador.InstanciarFormularioEdicion(Factura);
            FormularioFactura.MdiParent      = this.ParentForm.MdiParent;
            FormularioFactura.ControlDestino = EntradaComprobanteId;

            FormularioFactura.Show();
            return(new Lfx.Types.SuccessOperationResult());
        }
Exemple #5
0
        public virtual Lazaro.Pres.Spreadsheet.Workbook ToWorkbookDetalle(int IDComprobante)
        {
            Lbl.Comprobantes.Factura selComprobante = new Lbl.Comprobantes.Factura(this.Connection, IDComprobante);

            Lazaro.Pres.Spreadsheet.Workbook Res   = new Lazaro.Pres.Spreadsheet.Workbook();
            Lazaro.Pres.Spreadsheet.Sheet    Sheet = new Lazaro.Pres.Spreadsheet.Sheet(this.Text + " Comprobante");
            Res.Sheets.Add(Sheet);


            int OrderColumn = -1;

            if (selComprobante != null)
            {
                for (int i = 0; i < 9; i++)
                {
                    ExcelReg nexc = new ExcelReg();
                    switch (i)
                    {
                    case 0:
                        nexc.name      = "id_articulo";
                        nexc.desc      = "Código";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 100;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Integer;
                        break;

                    case 1:
                        nexc.name      = "nombre";
                        nexc.desc      = "Nombre";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 300;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Text;
                        break;

                    case 2:
                        nexc.name      = "descripcion";
                        nexc.desc      = "Descripción";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 150;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Text;
                        break;

                    case 3:
                        nexc.name      = "cantidad";
                        nexc.desc      = "Cantidad";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 80;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Numeric;
                        break;

                    case 4:
                        nexc.name      = "costo";
                        nexc.desc      = "Costo";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 90;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Currency;
                        break;

                    case 5:
                        nexc.name      = "precio";
                        nexc.desc      = "Precio Uni.";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 120;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Currency;
                        break;

                    case 6:
                        nexc.name      = "importe";
                        nexc.desc      = "Importe";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 120;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Currency;
                        break;

                    case 7:
                        nexc.name      = "recargo";
                        nexc.desc      = "Recargo";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 100;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Currency;
                        break;

                    case 8:
                        nexc.name      = "total";
                        nexc.desc      = "Total";
                        nexc.alig      = Lfx.Types.StringAlignment.Near;
                        nexc.width     = 120;
                        nexc.fieldtype = Lfx.Data.InputFieldTypes.Currency;

                        break;
                    }
                    Lazaro.Pres.Spreadsheet.ColumnHeader ColHead = new Lazaro.Pres.Spreadsheet.ColumnHeader(nexc.desc, nexc.width);
                    ColHead.Name          = Lazaro.Orm.Data.ColumnValue.GetNameOnly(nexc.name);
                    ColHead.TextAlignment = nexc.alig; ColHead.DataType = nexc.fieldtype; ColHead.Format = nexc.format; ColHead.Printable = true;
                    if (i == 8)
                    {
                        ColHead.TotalFunction = Lazaro.Pres.Spreadsheet.QuickFunctions.Sum;
                    }
                    Sheet.ColumnHeaders.Add(ColHead);
                    excReg.Add(nexc);
                }
            }

            // Exporto los renglones
            Lbl.Comprobantes.ColeccionDetalleArticulos detArt = selComprobante.Articulos;
            foreach (Lbl.Comprobantes.DetalleArticulo DtRow in detArt)
            {
                Lazaro.Pres.Spreadsheet.Row Reng = this.FormatArt(Sheet, DtRow);
                Sheet.Rows.Add(Reng);
            }

            if (OrderColumn >= 0)
            {
                if (m_GroupingColumnName != null)
                {
                    Sheet.SortByGroupAndColumn(OrderColumn, true);
                }
                else
                {
                    if (OrderColumn >= 0)
                    {
                        Sheet.Sort(OrderColumn, true);
                    }
                }
            }

            return(Res);
        }
Exemple #6
0
                private Lfx.Types.OperationResult Facturar()
                {
                        Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("¿Desea guardar los cambios realizados y generar una factura a partir de esta tarea?", "Facturar");
                        if (Pregunta.ShowDialog() != DialogResult.OK)
                                return new Lfx.Types.CancelOperationResult();

                        if (EntradaEstado.ValueInt < 50)
                                EntradaEstado.ValueInt = 50;

                        Lfx.Types.OperationResult Res = this.Save();
                        if (Res.Success == false)
                                return Res;

                        Lbl.Tareas.Tarea Tarea = this.Elemento as Lbl.Tareas.Tarea;
                        Lbl.Comprobantes.ComprobanteFacturable Factura;

                        Lfx.Data.Connection ConnFacturaNueva = Lfx.Workspace.Master.GetNewConnection("Convertir tarea en factura");

                        if (Tarea.Factura != null && Tarea.Factura.Anulado == false) {
                                // Ya fue facturada... lo muestro
                                Factura = Tarea.Factura;
                        } else {
                                // No tiene comprobante, lo creo
                                Factura = new Lbl.Comprobantes.Factura(ConnFacturaNueva);

                                Factura.Crear();
                                Factura.Cliente = EntradaCliente.Elemento as Lbl.Personas.Persona;
                                Factura.Cliente.Connection = ConnFacturaNueva;
                                Factura.Tipo = Factura.Cliente.ObtenerTipoComprobante();
                                Factura.Tipo.Connection = ConnFacturaNueva;
                                Factura.Vendedor = EntradaEncargado.Elemento as Lbl.Personas.Persona;
                                Factura.Vendedor.Connection = ConnFacturaNueva;
                                Factura.Obs = EntradaTarea.TextDetail + " s/" + this.Elemento.ToString();
                                if (Tarea.Articulos.Count > 0) {
                                        Factura.Articulos.AddRange(Tarea.Articulos);
                                } else if (Tarea.Presupuesto != null && Tarea.Presupuesto.Articulos.Count > 0) {
                                        Factura.Articulos.AddRange(Tarea.Presupuesto.Articulos);
                                        Factura.Descuento = Tarea.Presupuesto.Descuento;
                                }

                                if (EntradaImportePresupuesto.ValueDecimal > 0) {
                                        Lbl.Comprobantes.DetalleArticulo Art = new Lbl.Comprobantes.DetalleArticulo(Factura);

                                        Art.Nombre = this.Elemento.ToString();
                                        Art.Unitario = EntradaImportePresupuesto.ValueDecimal;
                                        Art.Cantidad = 1;

                                        Factura.Articulos.Add(Art);
                                }
                        }

                        Lfc.FormularioEdicion FormularioFactura = Lfc.Instanciador.InstanciarFormularioEdicion(Factura);
                        FormularioFactura.MdiParent = this.ParentForm.MdiParent;        
                        FormularioFactura.ControlDestino = EntradaComprobanteId;

                        FormularioFactura.Show();
                        return new Lfx.Types.SuccessOperationResult();
                }