public List <CuentaResumen> GetCuentasAndImpuestos(bool get_indirectos) { try { List <CuentaResumen> list = new List <CuentaResumen>(); ProductList productos = ProductList.GetList(false, true); FamiliaList familias = FamiliaList.GetList(false, true); ImpuestoList impuestos = ImpuestoList.GetList(false); bool nuevo; ProductInfo producto; FamiliaInfo familia; string cuenta; string nombre; foreach (InputInvoiceLineInfo item in _conceptos) { ImpuestoResumen impuesto = new ImpuestoResumen(); nuevo = true; producto = productos.GetItem(item.OidProducto); familia = familias.GetItem(producto.OidFamilia); cuenta = (producto.CuentaContableCompra == string.Empty) ? familia.CuentaContableCompra : producto.CuentaContableCompra; nombre = (producto.CuentaContableCompra == string.Empty) ? familia.Codigo + " " + familia.Nombre : producto.Codigo + " " + producto.Nombre; //Agrupamos los conceptos por cuentas contables for (int i = 0; i < list.Count; i++) { CuentaResumen cr = list[i]; //Tiene prioridad la cuenta contable del producto if (producto.CuentaContableCompra != string.Empty) { if ((cr.CuentaContable == producto.CuentaContableCompra) && (cr.Impuesto != null && cr.Impuesto.OidImpuesto == item.OidImpuesto)) { cr.Importe += item.BaseImponible; cr.Impuesto.Importe += item.Impuestos; cr.Impuesto.BaseImponible += item.BaseImponible; list[i] = cr; nuevo = false; break; } } //Luego la de la familia else if ((cr.CuentaContable == familia.CuentaContableCompra) && (cr.Impuesto != null && cr.Impuesto.OidImpuesto == item.OidImpuesto)) { cr.Importe += item.BaseImponible; cr.Impuesto.Importe += item.Impuestos; cr.Impuesto.BaseImponible += item.BaseImponible; list[i] = cr; nuevo = false; break; } } if (nuevo) { CuentaResumen new_cr = new CuentaResumen { OidFamilia = producto.OidFamilia, Importe = item.BaseImponible, CuentaContable = cuenta, Nombre = nombre, }; if (item.Impuestos != 0) { ImpuestoInfo imp = null; if (item.OidImpuesto != 0) { imp = impuestos.GetItem(item.OidImpuesto); } else { imp = impuestos.GetItemByProperty("Porcentaje", item.PImpuestos); } new_cr.Impuesto = new ImpuestoResumen { OidImpuesto = item.OidImpuesto, BaseImponible = item.BaseImponible, Importe = item.Impuestos, SubtipoFacturaRecibida = imp.CodigoImpuestoA3Recibida, Porcentaje = imp.Porcentaje, }; } else if ((get_indirectos) && (item.CuentaContable == "4727000001")) { new_cr.Impuesto = new ImpuestoResumen { OidImpuesto = 4, BaseImponible = 0, Importe = item.Total, SubtipoFacturaRecibida = impuestos.GetItem(4).CodigoImpuestoA3Recibida, }; } list.Add(new_cr); } } return(list); } catch { throw new iQException(String.Format(Resources.Messages.ERROR_FACTURA_CUENTA, NFactura, Acreedor)); } }
public List <CuentaResumen> GetCuentas() { try { List <CuentaResumen> list = new List <CuentaResumen>(); ProductList productos = ProductList.GetList(false, true); FamiliaList familias = FamiliaList.GetList(false, true); bool nuevo; ProductInfo producto; FamiliaInfo familia; string cuenta; foreach (InputInvoiceLineInfo item in _conceptos) { nuevo = true; producto = productos.GetItem(item.OidProducto); if (producto == null) { producto = productos.GetItem(InputDeliveryLineInfo.Get(item.OidConceptoAlbaran, false).OidProducto); } familia = familias.GetItem(producto.OidFamilia); cuenta = (producto.CuentaContableCompra == string.Empty) ? familia.CuentaContableCompra : producto.CuentaContableCompra; //Agrupamos los conceptos por cuentas contables for (int i = 0; i < list.Count; i++) { CuentaResumen cr = list[i]; //Tiene prioridad la cuenta contable del producto if (producto.CuentaContableCompra != string.Empty) { if (cr.CuentaContable == producto.CuentaContableCompra) { cr.Importe += item.BaseImponible; list[i] = cr; nuevo = false; break; } } //Luego la de la familia else if (cr.CuentaContable == familia.CuentaContableCompra) { cr.Importe += item.BaseImponible; list[i] = cr; nuevo = false; break; } } if (nuevo) { list.Add(new CuentaResumen { OidFamilia = producto.OidFamilia, Importe = item.BaseImponible, CuentaContable = cuenta }); } } return(list); } catch { throw new iQException(String.Format(Resources.Messages.ERROR_FACTURA_CUENTA, NFactura, Acreedor)); } }