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"); }
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"); }
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()); }
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); }
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(); }