private Factura_Resolucion_Detalle CargarLinea(FacturaElectronicaLineaDetalle linea)
        {
            try
            {
                Factura_Resolucion_Detalle lineaDB = new Factura_Resolucion_Detalle();
                lineaDB.Cantidad = Convert.ToInt32(linea.Cantidad);
                if (lineaDB.Codigo != null && linea.Codigo.Length > 0)
                {
                    lineaDB.Codigo = linea.CodigoComercial[0].Codigo;
                }

                if (linea.Descuento != null && linea.Descuento.Length > 0)
                {
                    lineaDB.Monto_Descuento      = linea.Descuento.Sum(q => q.MontoDescuento);
                    lineaDB.Naturaleza_Descuento = string.Join(", ", linea.Descuento.Select(q => q.NaturalezaDescuento));
                }

                lineaDB.Monto_Total       = linea.MontoTotal;
                lineaDB.Monto_Total_Linea = linea.MontoTotalLinea;
                lineaDB.PrecioUnitario    = linea.PrecioUnitario;
                lineaDB.SubTotal          = linea.SubTotal;
                lineaDB.ProductoServicio  = linea.Detalle;
                lineaDB.Gravado           = false;

                if (linea.Impuesto != null && linea.Impuesto.Length > 0)
                {
                    decimal MontoImpuesto = 0;
                    List <Factura_Resolucion_Detalle_Impuesto> impuestos = new List <Factura_Resolucion_Detalle_Impuesto>();
                    foreach (ImpuestoType im in linea.Impuesto)
                    {
                        MontoImpuesto += im.Monto;
                        impuestos.Add(new Factura_Resolucion_Detalle_Impuesto()
                        {
                            Impuesto_Codigo = im.Codigo.GetXmlValue(),
                            Impuesto_Monto  = im.Monto,
                            Impuesto_Tarifa = im.Tarifa
                        });
                    }

                    if (impuestos.Count > 0)
                    {
                        lineaDB.Gravado        = true;
                        lineaDB.Impuesto_Monto = MontoImpuesto;
                        lineaDB.Factura_Resolucion_Detalle_Impuesto = impuestos;
                    }
                }

                return(lineaDB);
            }
            catch (Exception ex)
            {
                this.LogError(ex);
                return(null);
            }
        }
 private void LoadBody(ref Factura_Resolucion fac, FacturaElectronica factura)
 {
     FacturaElectronicaLineaDetalle[] DetallesServicios = factura.DetalleServicio;
     if (DetallesServicios != null && DetallesServicios.Length > 0)
     {
         List <Factura_Resolucion_Detalle> Detalles = new List <Factura_Resolucion_Detalle>();
         foreach (FacturaElectronicaLineaDetalle nodo in DetallesServicios)
         {
             Factura_Resolucion_Detalle result = CargarLinea(nodo);
             if (result != null)
             {
                 Detalles.Add(result);
             }
         }
         fac.Factura_Resolucion_Detalle = Detalles;
     }
 }