// Llena una factura mediante los datos administrados por la consulta a la vista y la devuelve agregada en una lista por referencia private static void ConstruirFAC(SqlDataReader consulta, Configuracion config, string token, ref List<FAC.FAC> facturas) { string idEmpresa = config.idEmpresaDBNet; string UserEmpresa = config.UserEmpresaDBNet; // Crear Linea Dirección adquiriente string LineaDireccionEmisor = string.Concat("1|", config.TipoDireccion, '|', config.IdDUNS, '|', config.ApartadoPostal, '|', config.Direccion, '|', config.Area, '|', config.Ciudad, '|', config.Departamento, '|', config.CodigoDepartamento, '|', config.CodigoPais, '|', config.NombrePais); // Crear Linea Contacto adquiriente string LineaContactoEmisor = string.Concat("1|", config.TipoContacto, '|', config.NombreContacto, '|', config.TelefonoContacto, '|', config.MailContacto, '|', config.DescripcionContacto); // const int CAMPOS_ENCABEZADO = 38; const int CAMPOS_DIRECCION = 10; const int CAMPOS_CONTACTO = 5; const int CAMPOS_IMPUESTO = 7; const int CAMPOS_MEDIOPAGO = 4; const int CAMPOS_ITEM = 11; const int CAMPOS_IMPUESTOITEM = 8; const int CAMPOS_INFO_ADICIONAL_REPETIBLE = 4; const int INDICE_ENCABEZADO = 0; const int INDICE_DIRECCION = 38; const int INDICE_CONTACTO = 48; const int INDICE_IMPUESTO = 53; const int INDICE_MEDIOPAGO = 60; const int INDICE_ITEM = 64; const int INDICE_IMPUESTOITEM = 75; const int INDICE_INFO_ADICIONAL_REPETIBLE = 83; const int INDICE_DATOS_ADICIONALES = 87; // Indices de campos adicionales de ítem const int IndiceNotaItem = 74; const int IndiceCodigoItem = 83; const int IndiceBodegaItem = 84; const int IndiceReferenciaItem = 85; const int IndiceDocumentoItem = 86; // const int IndiceFechaEmision = 3; const int IndiceFechaPeriodoInicioFacturacion = 8; const int IndiceFechaPeriodoFinFacturacion = 10; const int IndiceNotaDocumento = 12; // const int IndiceMailContactoCliente = 51; // const int IndiceTotalImpuesto2 = 86 + 13 + 1; const int IndiceIndicadorImpuesto2 = 86 + 13 + 2; const int IndiceIndicadorImpuestoBaseImponible2 = 86 + 13 + 3; const int IndicePorcentajeImpuesto2 = 86 + 13 + 4; const int IndiceNumeroImpuesto2 = 86 + 13 + 5; const int IndiceNombreImpuesto2 = 86 + 13 + 6; const int IndiceDescuentoVisual = 86 + 13 + 7; string correlativo = ""; string serie = ""; string lineaCorreoDespacho = ""; string fechaDoc = consulta[IndiceFechaEmision].ToString(); // Acá se almacenará toda la información recolectada List<Documents.FAC.infoDoc> informacionDocumentoFAC = new List<Documents.FAC.infoDoc>(); // Acá se almacenarán los datos adicionales de la FAC List<Documents.FAC.datosVariables> DatosVariables = new List<Documents.FAC.datosVariables>(); int factura_Anterior = -1; string Pref_Anterior = ""; // Comienza el recorrido por los campos para extraer // TODO: desde un principio se ha manejado la instrucción Do while acá, cosa que no se usa en la instrucción de las // Notas de crédito, por alguna razón el do while(consulta.Read()) funciona acá y en las notas no, por lo // que se usa solo while(consulta.Read()) en la linea 654. do { int iterador = 0; int factura = (int)Convert.ToDouble(consulta[2].ToString()); string prefijo = consulta[1].ToString(); // Verificar que la factura previa tenga más campos de ítem: if (factura == factura_Anterior && prefijo == Pref_Anterior) { //llenar item string data = ""; iterador = INDICE_ITEM; data += consulta[iterador].ToString(); // Primer campo iterador++; while (iterador < INDICE_ITEM + CAMPOS_ITEM) { if (iterador == INDICE_ITEM + 6) data += "|" + consulta[INDICE_IMPUESTOITEM + 3].ToString(); else if (iterador == IndiceNotaItem) data += "|" + $"#Bodega: [{consulta[IndiceBodegaItem].ToString()}]; #Referencia: [{consulta[IndiceReferenciaItem].ToString()}]; #Fecha: [{fechaDoc}]; #Codigo: [{consulta[IndiceCodigoItem].ToString()}]; #Documento: [{consulta[IndiceDocumentoItem].ToString()}];"; else data += "|" + consulta[iterador].ToString(); iterador++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Item", data); //--- // Llenar ImpuestoItem data = ""; iterador = INDICE_IMPUESTOITEM; data += consulta[iterador].ToString(); // Primer campo iterador++; while (iterador < INDICE_IMPUESTOITEM + CAMPOS_IMPUESTOITEM) { data += "|" + consulta[iterador].ToString(); iterador++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "ImpuestoItem", data); // factura_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); continue; } else if (factura_Anterior != -1) break; while (iterador < consulta.FieldCount) { string data = ""; // Llenar Encabezado if (iterador == INDICE_ENCABEZADO) { data = "1"; string varAux = ""; string tipo_adquiriente = ""; while (iterador < CAMPOS_ENCABEZADO) { // Invertir campos para agregar a la factura if (iterador == 15) { varAux = consulta[iterador].ToString(); iterador++; continue; } else if (iterador == 16) { data += "|" + consulta[iterador].ToString(); data += "|" + varAux; iterador++; continue; } // En caso de ser un campo formato Hora, convertir a string Tipo[D-HH:MI:SS] para evitar error por parte del PT if (iterador == 4 || iterador == 9 || iterador == 11) { data += "|" + Funciones.formatoHoraString(consulta[iterador].ToString()); iterador++; continue; } // Registrar Serie if(iterador == 1) { serie = consulta[iterador].ToString(); } // Registrar correlativo (campo (2)) if (iterador == 2) { correlativo = consulta[iterador].ToString(); data += "|" + correlativo; iterador++; continue; } if(iterador == IndiceNotaDocumento) { data += $"|#Periodo desde: [{consulta[IndiceFechaPeriodoInicioFacturacion].ToString()}];" + $" #Periodo hasta: [{consulta[IndiceFechaPeriodoFinFacturacion].ToString()}];" + $" #ValorDescuento: [{consulta[IndiceDescuentoVisual].ToString()}];"; iterador++; continue; } // Registrar tipo adquiriente if (iterador == 21) tipo_adquiriente = consulta[iterador].ToString(); // Crear campo "NombreAdquiriente" en caso de que el adquiriente sea una persona natural if (iterador == 37) { if (tipo_adquiriente != "02" && tipo_adquiriente != "2") { iterador++; continue; } } data += "|" + consulta[iterador].ToString(); iterador++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Encabezado", data); } // Llenar Direcciones if (iterador == INDICE_DIRECCION) { data = "2"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_DIRECCION) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Direccion", LineaDireccionEmisor); Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Direccion", data); } // Llenar Contactos if (iterador == INDICE_CONTACTO) { data = "2"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_CONTACTO) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Contacto", LineaContactoEmisor); Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Contacto", data); } // Llenar Impuesto if (iterador == INDICE_IMPUESTO) { data = "1"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_IMPUESTO) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Impuesto", data); } // Definimos el segundo impuesto en caso de que venga != "" if (consulta[IndiceIndicadorImpuestoBaseImponible2].ToString() != "") Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Impuesto", $"2|COP|{consulta[IndiceTotalImpuesto2].ToString()}|{consulta[IndiceIndicadorImpuesto2].ToString()}|{consulta[IndiceIndicadorImpuestoBaseImponible2].ToString()}|{consulta[IndicePorcentajeImpuesto2].ToString()}|{consulta[IndiceNumeroImpuesto2].ToString()}|{consulta[IndiceNombreImpuesto2].ToString()}"); // Llenar MedioPago if (iterador == INDICE_MEDIOPAGO) { data = "1"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_MEDIOPAGO) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "MedioPago", data); } // Llenar primer Item if (iterador == INDICE_ITEM) { data = ""; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_ITEM) { if (iteradorTemp == 0) data += consulta[iterador].ToString(); // Se toma el campo de base imponible else if (iteradorTemp == 6) data += "|" + consulta[INDICE_IMPUESTOITEM + 3].ToString(); else if (iterador == IndiceNotaItem) data += "|" + $"#Bodega: [{consulta[IndiceBodegaItem].ToString()}]; #Referencia: [{consulta[IndiceReferenciaItem].ToString()}]; #Fecha: [{fechaDoc}]; #Codigo: [{consulta[IndiceCodigoItem].ToString()}]; #Documento: [{consulta[IndiceDocumentoItem].ToString()}];"; else data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "Item", data); } // Llenar ImpuestoItem if (iterador == INDICE_IMPUESTOITEM) { data = ""; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_IMPUESTOITEM) { if (iteradorTemp == 0) data += consulta[iterador].ToString(); else data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "ImpuestoItem", data); } // Campos Adicionales Item if(iterador == INDICE_INFO_ADICIONAL_REPETIBLE) { iterador += CAMPOS_INFO_ADICIONAL_REPETIBLE; } // Adicional: Correo Despacho para el envío de factura lineaCorreoDespacho = $"1|{consulta[IndiceMailContactoCliente].ToString()}|||SEND_FACT_EMIT"; // Llenar datos adicionales if (iterador == INDICE_DATOS_ADICIONALES) { const int CampoInicial = INDICE_DATOS_ADICIONALES; const int INDICE_CARGOS1 = 0 + CampoInicial; const int INDICE_CARGOS2 = 1 + CampoInicial; const int INDICE_ABONOS = 2 + CampoInicial; const int INDICE_SUBTOTAL_CARGOS1 = 3 + CampoInicial; const int INDICE_SUBTOTAL_CARGOS2 = 4 + CampoInicial; const int INDICE_SUBTOTAL_ABONOS = 5 + CampoInicial; const int INDICE_OTROS_CARGOS = 6 + CampoInicial; const int INDICE_CargosDelMes = 7 + CampoInicial; const int INDICE_AbonosDelMes = 8 + CampoInicial; const int INDICE_ValorEnMora = 9 + CampoInicial; const int INDICE_PagueAntesDe = 10 + CampoInicial; const int INDICE_ValorAPagar = 11 + CampoInicial; const int INDICE_TipoFac = 12 + CampoInicial; // Definir tipo de factura Funciones.crearLineaAdicional(ref DatosVariables, "TIPO: " + consulta[INDICE_TipoFac].ToString()); if (consulta[INDICE_TipoFac].ToString() != "1") { factura_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); break; } string Cargos1 = consulta[INDICE_CARGOS1].ToString(); string Cargos2 = consulta[INDICE_CARGOS2].ToString(); string Abonos = consulta[INDICE_ABONOS].ToString(); // Subtotales string SubtotalCargos1 = (consulta[INDICE_SUBTOTAL_CARGOS1].ToString()); string SubtotalCargos2 = (consulta[INDICE_SUBTOTAL_CARGOS2].ToString()); string SubtotalAbonos = (consulta[INDICE_SUBTOTAL_ABONOS].ToString()); // Totales string OtrosCargos = (consulta[INDICE_OTROS_CARGOS].ToString()); string CargosDelMes = (consulta[INDICE_CargosDelMes].ToString()); string ValorEnMora = (consulta[INDICE_ValorEnMora].ToString()); string PagueAntesDe = consulta[INDICE_PagueAntesDe].ToString(); string AbonosDelMes = (consulta[INDICE_AbonosDelMes].ToString()); string ValorAPagar = (consulta[INDICE_ValorAPagar].ToString()); Funciones.crearLineaAdicional(ref DatosVariables, Cargos1); Funciones.crearLineaAdicional(ref DatosVariables, Cargos2); Funciones.crearLineaAdicional(ref DatosVariables, Abonos); // Llenar Subtotales data = "Subtotales[SubtotalCargos1: "; data += SubtotalCargos1 + ", "; data += "SubtotalCargos2: "; data += SubtotalCargos2 + ", "; data += "SubtotalAbonos: "; data += SubtotalAbonos + "]"; Funciones.crearLineaAdicional(ref DatosVariables, data); //--- // Llenar totales data = "Totales[OtrosCargos: "; data += OtrosCargos + ", "; data += "CargosDelMes: "; data += CargosDelMes + ", "; data += "AbonosDelMes: "; data += AbonosDelMes + ", "; data += "ValorEnMora: "; data += ValorEnMora + ", "; data += "PagueAntesDe: "; data += PagueAntesDe + ", "; data += "ValorAPagar: "; data += ValorAPagar + "]"; Funciones.crearLineaAdicional(ref DatosVariables, data); //--- factura_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); break; } factura_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); } } while (consulta.Read()); //--- Funciones.AgregarCampoFAC(ref informacionDocumentoFAC, "CorreoDespacho", lineaCorreoDespacho); //--- Documents.FAC.infoProc infoprocFAC = new Documents.FAC.infoProc { idEmpr = idEmpresa, idArea = "BOGT", tipoDoc = "FE", SerieDoc = serie, corrDoc = correlativo, signDoc = "SI", asgCorr = "NO", genXml = "SI", saveDoc = "SI" }; Documents.FAC.infoAdic infoAdicional = new Documents.FAC.infoAdic { DatosVariables = DatosVariables }; Documents.FAC.emisionDocumento infoemisionDoc = new Documents.FAC.emisionDocumento { IdentificadorEmpresa = idEmpresa, UsuarioEmpresa = UserEmpresa, Token = token, infoProc = infoprocFAC, infoAdic = infoAdicional, infoDoc = informacionDocumentoFAC }; Documents.FAC.FAC FACTURA = new Documents.FAC.FAC() { EmisionDocumento = infoemisionDoc, }; facturas.Add(FACTURA); }
// Llena una nota mediante los datos administrados por la consulta a la vista y la devuelve agregada en una lista por referencia private static void ConstruirNC_ND(SqlDataReader consulta, Configuracion config, string token, ref List<DOCs.NC_ND> Notas) { string idEmpresa = config.idEmpresaDBNet; string UserEmpresa = config.UserEmpresaDBNet; // Crear Linea Dirección adquiriente string LineaDireccionEmisor = string.Concat("1|", config.TipoDireccion, '|', config.IdDUNS, '|', config.ApartadoPostal, '|', config.Direccion, '|', config.Area, '|', config.Ciudad, '|', config.Departamento, '|', config.CodigoDepartamento, '|', config.CodigoPais, '|', config.NombrePais); // Crear Linea Contacto adquiriente string LineaContactoEmisor = string.Concat("1|", config.TipoContacto, '|', config.NombreContacto, '|', config.TelefonoContacto, '|', config.MailContacto, '|', config.DescripcionContacto); string correlativo = ""; string serie = ""; string tipoDoc = ""; string lineaCorreoDespacho = ""; // Constantes const int IndiceMailContactoCliente = 47; const int INDICE_TIPOADQUIRIENTE = 17; const int INDICE_ENCABEZADO = 0; const int INDICE_DIRECCION = 34; const int INDICE_CONTACTO = 44; const int INDICE_IMPUESTO = 48; const int INDICE_ITEM = 55; const int INDICE_IMPUESTOITEM = 66; const int INDICE_REFERENCIA = 73; const int CAMPOS_ENCABEZADO = 34; const int CAMPOS_DIRECCION = 10; const int CAMPOS_CONTACTO = 4; const int CAMPOS_IMPUESTO = 7; const int CAMPOS_ITEM = 11; const int CAMPOS_IMPUESTOITEM = 7; const int CAMPOS_REFERENCIA = 3; // Acá se almacenará toda la información recolectada List<Documents.DOCs.infoDoc> InformacionDocumentoNota = new List<Documents.DOCs.infoDoc>(); string lineareferencia = ""; int DOC_Anterior = -1; string Pref_Anterior = ""; // Comienza el recorrido por los campos para extraer while(consulta.Read()) { //--- TODO /* string consulta2; consulta.Read(); try { consulta2 = consulta[2].ToString(); } catch(Exception ex) { string excep = ex.Message; } */ //--- int iterador = 0; int documento = (int)Convert.ToDouble(consulta[2].ToString()); string prefijo = consulta[1].ToString(); tipoDoc = consulta[0].ToString(); // Verificar que la Nota previa tenga más campos de ítem: if (prefijo == Pref_Anterior && DOC_Anterior == documento) { // Se llena impuestoItem e Item //llenar item string data = ""; iterador = INDICE_ITEM; data += consulta[iterador].ToString(); // Primer campo iterador++; while (iterador < INDICE_ITEM + CAMPOS_ITEM) { data += "|" + consulta[iterador].ToString(); iterador++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Item", data); // Llenar ImpuestoItem data = ""; iterador = INDICE_IMPUESTOITEM; data += consulta[iterador].ToString(); // Primer campo iterador++; while (iterador < INDICE_IMPUESTOITEM + CAMPOS_IMPUESTOITEM) { data += "|" + consulta[iterador].ToString(); iterador++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "ImpuestoItem", data); //--- // DOC_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); continue; } else if (DOC_Anterior != -1) break; while(iterador < consulta.FieldCount) { string data = ""; string tipo_adquiriente = consulta[INDICE_TIPOADQUIRIENTE].ToString(); // Llenar Encabezado if (iterador == INDICE_ENCABEZADO) { data = "1"; while (iterador < CAMPOS_ENCABEZADO) { // En caso de ser un campo formato Hora, convertir a string Tipo[D-HH:MI:SS] para evitar error por parte del PT if (iterador == 4) { data += "|" + Funciones.formatoHoraString(consulta[iterador].ToString()); iterador++; continue; } // Registrar Serie if (iterador == 1) { serie = consulta[iterador].ToString(); } // Registrar correlativo (campo (2)) if (iterador == 2) { correlativo = consulta[iterador].ToString(); data += "|" + correlativo; iterador++; continue; } // Crear campo "NombreAdquiriente" en caso de que el adquiriente sea una persona natural if (iterador == 33) { if (tipo_adquiriente != "02" && tipo_adquiriente != "2") { iterador++; continue; } } data += "|" + consulta[iterador].ToString(); iterador++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Encabezado", data); } // Llenar Direcciones if (iterador == INDICE_DIRECCION) { data = "2"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_DIRECCION) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Direccion", LineaDireccionEmisor); Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Direccion", data); } // Llenar Contactos if (iterador == INDICE_CONTACTO) { data = "2"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_CONTACTO) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } data += "|"; Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Contacto", LineaContactoEmisor); Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Contacto", data); } // Llenar Impuesto if (iterador == INDICE_IMPUESTO) { data = "1"; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_IMPUESTO) { data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Impuesto", data); } // Llenar primer Item if (iterador == INDICE_ITEM) { data = ""; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_ITEM) { if (iteradorTemp == 0) data += consulta[iterador].ToString(); // Se toma el campo de base imponible ///else if (iteradorTemp == 6) data += "|" + consulta[INDICE_IMPUESTOITEM + 3].ToString(); ///else if (iterador == IndiceNotaItem) data += "|" + $"#Bodega: [{consulta[IndiceBodegaItem].ToString()}]; #Referencia: [{consulta[IndiceReferenciaItem].ToString()}]; #Fecha: [{fechaDoc}]; #Codigo: [{consulta[IndiceCodigoItem].ToString()}]; #Documento: [{consulta[IndiceDocumentoItem].ToString()}];"; else data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Item", data); } // Llenar ImpuestoItem if (iterador == INDICE_IMPUESTOITEM) { data = ""; int iteradorTemp = 0; while (iteradorTemp < CAMPOS_IMPUESTOITEM) { if (iteradorTemp == 0) data += consulta[iterador].ToString(); else data += "|" + consulta[iterador].ToString(); iterador++; iteradorTemp++; } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "ImpuestoItem", data); } // Llenar Referencia if (iterador == INDICE_REFERENCIA) { data = $"1|FA|{consulta[iterador].ToString() + consulta[iterador+1].ToString()}|{consulta[iterador+2].ToString()}|FE"; //data += "|" + consulta[iterador].ToString(); iterador+= CAMPOS_REFERENCIA+1; //data += "|" + "FE"; lineareferencia = data; } // Adicional: Correo Despacho para el envío de documento lineaCorreoDespacho = $"1|{consulta[IndiceMailContactoCliente].ToString()}|||SEND_FACT_EMIT"; if (iterador > INDICE_REFERENCIA) { DOC_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); break; } DOC_Anterior = (int)Convert.ToDouble(consulta[2].ToString()); Pref_Anterior = consulta[1].ToString(); iterador++; } } Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "Referencia", lineareferencia); Funciones.AgregarCampoNota(ref InformacionDocumentoNota, "CorreoDespacho", lineaCorreoDespacho); // Construcción documento DOCs.infoProc infoproceso = new DOCs.infoProc() { idEmpr = idEmpresa, idArea = "BOGT", tipoDoc = tipoDoc, SerieDoc = serie, corrDoc = correlativo, signDoc = "SI", asgCorr = "NO", genXml = "SI", saveDoc = "SI" }; Documents.DOCs.emisionDocumento infoemisionDoc = new Documents.DOCs.emisionDocumento { IdentificadorEmpresa = idEmpresa, UsuarioEmpresa = UserEmpresa, Token = token, infoProc = infoproceso, infoDoc = InformacionDocumentoNota }; Documents.DOCs.NC_ND notaGenerada = new Documents.DOCs.NC_ND() { EmisionDocumento = infoemisionDoc, }; Notas.Add(notaGenerada); }