public List <NotaCreditoElectronicaLineaDetalle> DetalleNotaCredito(ComprobanteElectronicoCRI value) { List <NotaCreditoElectronicaLineaDetalle> detalleServicio = new List <NotaCreditoElectronicaLineaDetalle>(); for (int i = 0; i <= value.ListaComprobanteElectronicoCRIDetalle.Count - 1; i++) { if (i > 999) { return(detalleServicio); } NotaCreditoElectronicaLineaDetalle linea = new NotaCreditoElectronicaLineaDetalle { NumeroLinea = value.ListaComprobanteElectronicoCRIDetalle[i].NumeroLinea.ToString(), Codigo = new CodigoTypeNC[] { new CodigoTypeNC { Tipo = (CodigoTypeTipo)Enum.Parse(typeof(CodigoTypeTipo), value.ListaComprobanteElectronicoCRIDetalle[i].TipoCodigo), Codigo = value.ListaComprobanteElectronicoCRIDetalle[i].Codigo } }, Cantidad = value.ListaComprobanteElectronicoCRIDetalle[i].Cantidad.ToString(EngineData.decimalFormat3, CultureInfo.InvariantCulture),// 13 enteros 3 decimales UnidadMedida = (UnidadMedidaType)Enum.Parse(typeof(UnidadMedidaType), value.ListaComprobanteElectronicoCRIDetalle[i].UnidadMedida), UnidadMedidaComercial = value.ListaComprobanteElectronicoCRIDetalle[i].UnidadMedidaComercial, Detalle = value.ListaComprobanteElectronicoCRIDetalle[i].Detalle, PrecioUnitario = value.ListaComprobanteElectronicoCRIDetalle[i].PrecioUnitario.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //13enteros 5 decimales MontoTotal = value.ListaComprobanteElectronicoCRIDetalle[i].MontoTotal.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //cantidad * precioUnitario 13enteros 5 decimales MontoDescuento = value.ListaComprobanteElectronicoCRIDetalle[i].MontoDescuento.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture), //13enteros 5 decimales MontoDescuentoSpecified = EngineDocumento.InsertFieldBoolCantidad(value.ListaComprobanteElectronicoCRIDetalle[i].MontoDescuento), NaturalezaDescuento = value.ListaComprobanteElectronicoCRIDetalle[i].NaturalezaDescuento, SubTotal = value.ListaComprobanteElectronicoCRIDetalle[i].SubTotal.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture),//montoTotal - montoDescuento Impuesto = ImpuestoNotaCredito(value, value.ListaComprobanteElectronicoCRIDetalle[i].NumeroLinea - 1).ToArray(), MontoTotalLinea = value.ListaComprobanteElectronicoCRIDetalle[i].MontoTotalLinea.ToString(EngineData.decimalFormat5, CultureInfo.InvariantCulture) }; detalleServicio.Add(linea); } return(detalleServicio); }
private List <NotaCreditoElectronicaLineaDetalle> GetDetalleFromFacturaDB(ICollection <Factura_Detalle> items) { List <NotaCreditoElectronicaLineaDetalle> lst = new List <NotaCreditoElectronicaLineaDetalle>(); int NumeroLinea = 1; foreach (Factura_Detalle q in items) { NotaCreditoElectronicaLineaDetalle fd = new NotaCreditoElectronicaLineaDetalle() { Cantidad = q.Cantidad, CodigoComercial = new NotaCreditoElectronica_V4_3.CodigoType[] { new NotaCreditoElectronica_V4_3.CodigoType() { Codigo = q.Codigo, Tipo = NotaCreditoElectronica_V4_3.CodigoTypeTipo.Item01 } }, Detalle = q.ProductoServicio, NumeroLinea = NumeroLinea.ToString(), PrecioUnitario = q.PrecioUnitario, SubTotal = q.SubTotal, UnidadMedida = EnumUtils.SetTypeString <NotaCreditoElectronica_V4_3.UnidadMedidaType>(q.Unidad_Medida), MontoTotal = q.Monto_Total, MontoTotalLinea = q.Monto_Total_Linea, }; if (q.Monto_Descuento.HasValue && q.Monto_Descuento.Value != 0) { fd.Descuento = new DescuentoType[] { new DescuentoType() { MontoDescuento = q.Monto_Descuento.Value, NaturalezaDescuento = string.IsNullOrEmpty(q.Naturaleza_Descuento) ? "No se indica" : q.Naturaleza_Descuento } }; } if (q.Factura_Detalle_Impuesto != null && q.Factura_Detalle_Impuesto.Count > 0) { List <NotaCreditoElectronica_V4_3.ImpuestoType> impuestoD = new List <NotaCreditoElectronica_V4_3.ImpuestoType>(); foreach (Factura_Detalle_Impuesto impuesto in q.Factura_Detalle_Impuesto) { if (impuesto.Exento) { //exento parcial if (!string.IsNullOrWhiteSpace(impuesto.Exoneracion_PorcentajeCompra) && impuesto.Exoneracion_MontoImpuesto.HasValue)//exento parcial { impuestoD.Add(new NotaCreditoElectronica_V4_3.ImpuestoType() { Codigo = EnumUtils.SetTypeString <NotaCreditoElectronica_V4_3.ImpuestoTypeCodigo>(impuesto.Impuesto_Codigo), Monto = impuesto.Impuesto_Monto, Tarifa = impuesto.Impuesto_Tarifa, Exoneracion = new NotaCreditoElectronica_V4_3.ExoneracionType() { FechaEmision = impuesto.Exoneracion_FechaEmision.Value, //MontoImpuesto = impuesto.Exoneracion_MontoImpuesto.Value, NombreInstitucion = impuesto.Exoneracion_NombreInstitucion, NumeroDocumento = impuesto.Exoneracion_NumeroDocumento, PorcentajeExoneracion = impuesto.Exoneracion_PorcentajeCompra, TipoDocumento = EnumUtils.SetTypeString <NotaCreditoElectronica_V4_3.ExoneracionTypeTipoDocumento>(impuesto.Exoneracion_TipoDocumento) }, }); } else if (impuesto.Impuesto_Tarifa != 0) //exento linea total todo a 0 { impuestoD.Add(new NotaCreditoElectronica_V4_3.ImpuestoType() { Codigo = EnumUtils.SetTypeString <NotaCreditoElectronica_V4_3.ImpuestoTypeCodigo>(impuesto.Impuesto_Codigo), Monto = 0, Tarifa = 0, }); } } else//gravado { impuestoD.Add(new NotaCreditoElectronica_V4_3.ImpuestoType() { Codigo = EnumUtils.SetTypeString <NotaCreditoElectronica_V4_3.ImpuestoTypeCodigo>(impuesto.Impuesto_Codigo), Monto = impuesto.Impuesto_Monto, Tarifa = impuesto.Impuesto_Tarifa, }); } } if (impuestoD.Count != 0) { fd.Impuesto = impuestoD.ToArray(); } } lst.Add(fd); NumeroLinea++; } return(lst); }