static void Main(string[] args) { FileName = FileLocation = DocumentName = DocumentType = RucNumber = SummaryDate = ""; //Variables que se usaran dentro del proceso de Validacion/GeneracionXML/IngresoBD List <string> DataTXT = new List <string>(); DateTime hi = DateTime.Now; // Inicializa Configuración Inicial MainSettings MS = new MainSettings(); GeneraLog = MS.GeneraLog; GeneraLog.LecturaArchivo("= = = = INICIO DE LECTURA DE ARCHIVO = = ="); // Verificamos si es que la ruta está en args[] if (args.Length < 1) { args = new string[1]; GeneraLog.LecturaArchivo(": : MODO MANUAL"); GeneraLog.LecturaArchivo("Ingrese el nombre del archivo a procesar: "); args[0] = Console.ReadLine(); GeneraLog.LecturaArchivo("Nombre del archivo ingresado manualmente: " + args[0]); } // Armamos la ruta y nombre del archivo MS.FileName = FileName = args[0]; MS.FileLocation = FileLocation = MS.ITXT + FileName; // Si es que el FileName es vacío if (args[0].Length == 0) { GeneraLog.LecturaArchivo($"No se ha ingresado nombre del archivo a Procesar"); GeneraLog.LecturaArchivo("= = = = FIN DE LECTURA DE ARCHIVO = = =\n"); GeneraLog.RegistraError(FileName); goto EndProgram; } GeneraLog.LecturaArchivo($"Ruta completa del Archivo a Verificar:{MS.ITXT + args[0]}"); // bool archivoTxt = File.Exists(FileLocation+".txt"); // Ahora verificamos que el archivo indicado exista. if (!File.Exists(FileLocation)) { GeneraLog.LecturaArchivo($"Archivo en: {FileLocation} no existe"); GeneraLog.LecturaArchivo("= = = = FIN DE LECTURA DE ARCHIVO = = =\n"); return; } if (!MS.ok) { if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.LecturaArchivo("Se movió el archivo a la ruta " + MS.IERR + FileName); GeneraLog.RegistraError(FileName); goto EndProgram; } GeneraLog.LecturaArchivo($"Empezando a leer el archivo {FileName} "); using (StreamReader sr = new StreamReader(FileLocation, System.Text.Encoding.GetEncoding("ISO-8859-1"))) { ContentWriteRC_In = string.Empty; string line = ""; while ((line = sr.ReadLine()) != null) { ContentWriteRC_In = line; line = line.Replace("§", "°"); line = line.Replace("¥", "Ñ"); DataTXT.Add(line); if (line.StartsWith("CABECERA-PRINCIPAL")) { DocumentType = line; } if (line.StartsWith("CABECERA-EMISOR")) { RucNumber = line; } } } if (DocumentType.ToString() != "") { string[] HTemp = DocumentType.Split('|'); string[] ETemp = RucNumber.Split('|'); try { int n; DocumentType = HTemp[1].Trim(); SummaryDate = HTemp[2]; if (!DocumentType.StartsWith("R")) { RucNumber = ETemp[2]; } else { RucNumber = HTemp[3]; } if (int.TryParse(DocumentType, out n)) { string docs = "01|03|07|08|20|40|RA|RC|RR"; if (docs.Contains(DocumentType)) { GeneraLog.LecturaArchivo("Documento detectado: " + DocumentType); } else { GeneraLog.LecturaArchivo("El tipo de documento del archivo no es válido"); if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.LecturaArchivo("Se movió el archivo a la ruta " + MS.IERR + FileName); GeneraLog.RegistraError(FileName); goto EndProgram; } } else { if (DocumentType.StartsWith("R")) { SummaryDate = HTemp[2]; if (HTemp.Length > 4) { TypeRC = HTemp[4]; } else { TypeRC = "XGN"; } GeneraLog.LecturaArchivo("El archivo corresponde a un Resumen"); } } } catch (Exception e) { GeneraLog.LecturaArchivo("No se pudo obtener el tipo de documento del archivo"); if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.LecturaArchivo($"Se movió el archivo a la ruta{MS.IERR + FileName}"); GeneraLog.RegistraError(FileName); goto EndProgram; } } else { GeneraLog.LecturaArchivo("Tag CABECERA-PRINCIPAL es obligatorio"); if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.LecturaArchivo($"Se movió el archivo a la ruta{MS.IERR + FileName}"); GeneraLog.RegistraError(FileName); goto EndProgram; } MS.DocumentType = DocumentType; MS.SummaryDate = SummaryDate; if (!MS.Load(RucNumber)) { if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.LecturaArchivo($"La empresa con el RUC:{RucNumber} no está habilitada"); GeneraLog.RegistraError(FileName); goto EndProgram; } GeneraLog.LecturaArchivo("= = = = FIN DE LECTURA DE ARCHIVO = = =\n"); // Inicia Validación en ingreso a base de datos VD = new Validation(MS); if (VD.ValidateInterface(DataTXT) || DocumentType.StartsWith("R")) { MS = VD.MS; MS.getFileNames(); XMLGeneration XML = new XMLGeneration(MS, VD); //bool res = (bool)XML.Generate(); //var list = (Extras.Common.Method.ListUtilClass)XML.Generate(TypeRC); var list = XML.Generate(TypeRC); //if ((bool)XML.Generate()) ItsCantDocs = 0; LowDocs = new List <RBoletasDetalle>(); LowDocs = list.ListBoletasLow; ItsCantDocs = list.CantDocs; //aqui ListNoteDocs = list.ListNotesDoc; if (list.Generate == true) { if (DocumentType.StartsWith("R")) { MS = XML.MS; } //var xd = new DatabaseIncome(MS).InsertInDatabase(XML.Document, new Extras.Common.Method.ListUtilClass()); var xd = new DatabaseIncome(MS).InsertInDatabase(XML.Document, list, TypeRC); if (xd) { DatabaseConnection DB = new DatabaseConnection(MS); GenerateMAILPDF(MS, DB, "2"); } if (File.Exists(MS.IPRC + FileName)) { File.Delete(MS.IPRC + FileName); } File.Move(FileLocation, MS.IPRC + FileName); goto EndProgram; } else { if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.RegistraError(FileName); goto EndProgram; } } else { if (File.Exists(MS.IERR + FileName)) { File.Delete(MS.IERR + FileName); } File.Move(FileLocation, MS.IERR + FileName); GeneraLog.RegistraError(FileName); goto EndProgram; } EndProgram: DateTime hf = DateTime.Now; GeneraLog.LecturaArchivo("Duración : " + (hf - hi).TotalMinutes + " ms"); GeneraLog.LecturaArchivo("Fin del Proceso.."); GeneraLog.LecturaArchivo("-----------------------------------------------------"); GeneraLog.RegistraLog(FileName); //si se encontro documentos en estado anulado then escribe un txt para resumen de bajas //genera un nuevo txt //if(LowDocs.Count > 0 && !ContentWriteRC_In.Contains("ANS")) //{ // PathWriteRC_In = string.Empty; // PathWriteRC_In = Path.GetFullPath(Path.Combine(MS.IERR, "../../../")); // PathWriteRC_In += @"_ADE\in\" + FileName; // using (StreamWriter sw = new StreamWriter(PathWriteRC_In)) // { // sw.Write(ContentWriteRC_In + "|ANS"); // } //} if (ListNoteDocs.Count > 0) { PathWriteRC_In = string.Empty; PathWriteRC_In = Path.GetFullPath(Path.Combine(MS.IERR, "../../../")); PathWriteRC_In += @"_ADE\in\" + FileName; using (StreamWriter sw = new StreamWriter(PathWriteRC_In)) { sw.Write(ContentWriteRC_In + "|NCD"); } } else { if (ItsCantDocs > LowDocs.Count) { PathWriteRC_In = string.Empty; PathWriteRC_In = Path.GetFullPath(Path.Combine(MS.IERR, "../../../")); PathWriteRC_In += @"_ADE\in\" + FileName; using (StreamWriter sw = new StreamWriter(PathWriteRC_In)) { sw.Write(ContentWriteRC_In); } } else { if (LowDocs.Count > 0 && !ContentWriteRC_In.Contains("ANS")) { PathWriteRC_In = string.Empty; PathWriteRC_In = Path.GetFullPath(Path.Combine(MS.IERR, "../../../")); PathWriteRC_In += @"_ADE\in\" + FileName; using (StreamWriter sw = new StreamWriter(PathWriteRC_In)) { if (ContentWriteRC_In.Contains("NCD")) { ContentWriteRC_In = ContentWriteRC_In.Replace("NCD", "ANS"); } else { ContentWriteRC_In = ContentWriteRC_In + "|ANS"; } sw.Write(ContentWriteRC_In); } } } //if (LowDocs.Count > 0 && !ContentWriteRC_In.Contains("ANS")) //{ // PathWriteRC_In = string.Empty; // PathWriteRC_In = Path.GetFullPath(Path.Combine(MS.IERR, "../../../")); // PathWriteRC_In += @"_ADE\in\" + FileName; // using (StreamWriter sw = new StreamWriter(PathWriteRC_In)) // { // if (ContentWriteRC_In.Contains("NCD")) // { ContentWriteRC_In = ContentWriteRC_In.Replace("NCD", "ANS"); } // else // { ContentWriteRC_In = ContentWriteRC_In + "|ANS"; } // sw.Write(ContentWriteRC_In); // } //} } if (ItsCantDocs > 0) { PathWriteRC_In = string.Empty; PathWriteRC_In = Path.GetFullPath(Path.Combine(MS.IERR, "../../../")); PathWriteRC_In += @"_ADE\in\" + FileName; using (StreamWriter sw = new StreamWriter(PathWriteRC_In)) { sw.Write(ContentWriteRC_In); } } //EnvioSunat(MS); }
static void Main(string[] args) { // Inicializa Configuración Inicial MainSettings MS = new MainSettings(); if (!MS.ok) { return; } GeneraLog = MS.GeneraLog; GeneraLog.EnvioSunat01("= = = = INICIO DE ENVÍO A SUNAT = = = ="); // Verificamos si es que el nombre del documento está en args[] if (args.Length < 1) { //args = new string[2]; GeneraLog.EnvioSunat01(": : MODO MANUAL"); GeneraLog.EnvioSunat01("Ingrese el nombre del documento a procesar: "); args = Console.ReadLine().Split(' '); GeneraLog.EnvioSunat01("Nombre del documento ingresado manualmente: " + args[0]); } GeneraLog.EnvioSunat01("Nombre del Documento a envíar a SUNAT: " + args[0]); //DocumentName = "20544014189-RR-20171024-1"; DocumentName = args[0]; if (args.Length > 1) { if (args[1].ToUpper() == "Q") { isQuery = true; } } if (!Fill()) { return; } MS.DocumentName = DocumentName; MS.DocumentType = DocumentType; MS.RucNumber = RucNumber; MS.getFileNames(); if (MS.DocumentType.StartsWith("R")) { isSummary = true; if (MS.DocumentType == "RC") { SummaryType = "B"; } if (MS.DocumentType == "RA") { SummaryType = "A"; } if (MS.DocumentType == "RR") { SummaryType = "A"; } } string typedoc = string.Empty; if (MS.DocumentName.ToLower().Contains("r")) { if (MS.DocumentName.ToLower().Contains("rc-")) { typedoc = "B"; } if (MS.DocumentName.ToLower().Contains("ra-")) { typedoc = "A"; } if (MS.DocumentName.ToLower().Contains("rr-")) { typedoc = "A"; } } #region Validacion de RUC if (!MS.Load(RucNumber)) { if (MS.Envi == "") { GeneraLog.LecturaArchivo($"El Tipo de Documento {DocumentType} no está habilitado para el envío a Sunat"); GeneraLog.EnvioSunat01("= = = = FIN DE ENVÍO A SUNAT = = = ="); return; } else { GeneraLog.LecturaArchivo($"La empresa con el RUC:{RucNumber} no está habilitada"); GeneraLog.EnvioSunat01("= = = = FIN DE ENVÍO A SUNAT = = = ="); return; } } #endregion DatabaseConnection DB = new DatabaseConnection(MS); // Verificamos en la Base de Datos el numero de Documento ingresado int a = DB.SP_ObtenerDocumentoXML(DocumentName); MS = DB.MS; #region Error de Consulta if (a == -1) { GeneraLog.EnvioSunat01("Error al momento de consultar el documento"); } #endregion #region Documento no Existe else if (a == 0) { GeneraLog.EnvioSunat01($"El Documento {DocumentName} no existe en base de datos"); } #endregion #region Documento ya ha sido enviado else if (a == 1) { GeneraLog.EnvioSunat01($"El Documento {DocumentName} ya ha sido enviado a SUNAT"); } #endregion #region Documento puede ser enviado else if (a == 2) { GeneraLog.EnvioSunat01($"El Documento {DocumentName} está listo para ser enviado a SUNAT"); if (zipFile(DB, MS)) { GeneraLog.EnvioSunat01($"Documento comprimido en {MS.ZIPEFileLocation}"); SunatConnection SN = null; if ("20|40|RR".Contains(DocumentType)) { SN = new SunatConnection("Retenciones", MS); } else if ("01|07|08|RC|RA".Contains(DocumentType) && !DocumentSerie.StartsWith("B")) { SN = new SunatConnection("Documentos", MS); } else if ("03|".Contains(DocumentType) || DocumentSerie.StartsWith("B")) { if (MS.Envi == "HML") { SN = new SunatConnection("Documentos", MS); } } else { GeneraLog.EnvioSunat01($"Documento {DocumentType} no configurado en ambiente {MS.Envi}"); } //Thread.Sleep(5000); if (SN != null) { #region Consulta de Ticket if (isQuery) { Tuple <string, bool> XQ = null; XQ = SN.ObtenerEstadoUnit(MS.im); if (XQ.Item2) { #region my change if (XQ.Item1 != null && XQ.Item1.Length > 200)//valida que sea un xml { //aqui descomprime el cdr if (UnZipCDR(MS, XQ.Item1)) { //obtiene el codigo de respuesta en el cdr #region insert cdr and update document header var rs = ADE.Extras.Common.Method.Methods.Instance.GetActionCodeResponse_CDR(MS); switch (rs) { case "SOK": //ok case "OBS": //obsv { DB.SP_InsertaCDRResumen(CDR, MS.id, SummaryType); GeneraLog.EnvioSunat01("CDR guardado correctamente"); GetNotes(DB, MS); GeneraLog.EnvioSunat01("Documento ha sido aceptado correctamente por SUNAT"); //DB.addRSunatResponse(MS.id, "7", CDRmsg, MS.im, SummaryType); DB.addRSunatResponse(MS.id, "SOK", CDRmsg, MS.im, SummaryType); #region RA, RR NOTIFICACION string path = Directory.GetCurrentDirectory(); string pathlog = MS.LOGS + "7_NotificacionBaja.log"; //if (typedoc.Contains("A")) //{ var list = DB.Get_ListDocument_AN(MS.id); if (list.Count > 0) { foreach (var d in list) { if (d.TO.Length > 5 && d.TypeRC == "ANS") { var res = ADE.Extras.Common.Method.Methods.Instance.SendNotify(path, d); ADE.Extras.Common.Method.Methods.Instance.WriteLog(pathlog, "------------------------- INICIO -------------------------"); ADE.Extras.Common.Method.Methods.Instance.WriteLog(pathlog, "Enviando notificación de baja"); ADE.Extras.Common.Method.Methods.Instance.WriteLog(pathlog, "Documento : " + d.Num_CE); ADE.Extras.Common.Method.Methods.Instance.WriteLog(pathlog, "Email Destino: " + d.TO); ADE.Extras.Common.Method.Methods.Instance.WriteLog(pathlog, "Resultado : " + res); ADE.Extras.Common.Method.Methods.Instance.WriteLog(pathlog, "-------------------------- FIN ---------------------------"); ADE.Extras.Common.Method.Methods.Instance.ConsoleLog("------------------------- INICIO -------------------------"); ADE.Extras.Common.Method.Methods.Instance.ConsoleLog("Enviando notificación de baja"); ADE.Extras.Common.Method.Methods.Instance.ConsoleLog("Documento : " + d.Num_CE); ADE.Extras.Common.Method.Methods.Instance.ConsoleLog("Email Destino: " + d.TO); ADE.Extras.Common.Method.Methods.Instance.ConsoleLog("Resultado : " + res); ADE.Extras.Common.Method.Methods.Instance.ConsoleLog("-------------------------- FIN ---------------------------"); } } } //typedoc = string.Empty; //} #endregion break; } case "RCHZ": //rechazado { string item1 = string.Empty; if (XQ.Item1 != null && XQ.Item1.Length > 200) { item1 = "CDR"; } else { item1 = XQ.Item1; } DB.SP_InsertaCDRResumen(CDR, MS.id, SummaryType); GeneraLog.EnvioSunat01("CDR guardado correctamente"); GetNotes(DB, MS); GeneraLog.EnvioSunat01("Documento fue enviado pero tiene errores: " + item1); //DB.addRSunatResponse(MS.id, "6", CDRmsg, MS.im, SummaryType); DB.addRSunatResponse(MS.id, "SRE", CDRmsg, MS.im, SummaryType); break; } case "EXC": //exception { string item1 = string.Empty; if (XQ.Item1 != null && XQ.Item1.Length > 200) { item1 = "CDR"; } else { item1 = XQ.Item1; } GeneraLog.EnvioSunat01("Se detectaron excepciones al enviar el archivo: " + item1); break; } case "": //cuando no se obtuvo codigo del cdr { string item1 = string.Empty; if (XQ.Item1 != null && XQ.Item1.Length > 200) { item1 = "CDR"; } else { item1 = XQ.Item1; } GeneraLog.EnvioSunat01("El procedimiento no devolvio un cdr: " + item1); break; } } #endregion } else { GeneraLog.EnvioSunat01("Error al descomprimir cdr"); } } else { GeneraLog.EnvioSunat01("El procedimiento no devolvio un cdr: " + XQ.Item1); } #endregion //aqui va el unzip de consulta ticket //aqui ternima el unzip de consulta ticket } else { #region code 99 if (XQ.Item1 != null && XQ.Item1.Length > 200)//valida que sea un xml { if (UnZipCDR(MS, XQ.Item1)) { DB.SP_InsertaCDRResumen(CDR, MS.id, SummaryType); GeneraLog.EnvioSunat01("CDR guardado correctamente"); GetNotes(DB, MS); string item1 = string.Empty; if (XQ.Item1 != null && XQ.Item1.Length > 200) { item1 = "CDR"; } else { item1 = XQ.Item1; } GeneraLog.EnvioSunat01("Documento fue enviado pero tiene errores: " + item1); //DB.addRSunatResponse(MS.id, "6", CDRmsg, MS.im, SummaryType); DB.addRSunatResponse(MS.id, "SRE", CDRmsg, MS.im, SummaryType); } } else { string item1 = string.Empty; if (XQ.Item1 != null && XQ.Item1.Length > 200) { item1 = "CDR"; } else { item1 = XQ.Item1; } GeneraLog.EnvioSunat01("El proceso devolvio: " + item1 + ", " + XQ.Item2); } #endregion //GeneraLog.EnvioSunat01("El procedimiento no devolvio un cdr: " + XQ.Item1); //GeneraLog.EnvioSunat01("Resumen ha sido rechazado"); //descomentar //DB.addRSunatResponse(MS.id, "6", "", MS.im, SummaryType); //descomentar } } #endregion #region Envío a Sunat else { Tuple <string, bool> XA = null; if (isSummary) { XA = SN.EnviarResumen(ZIP, MS.ZIPEFileName); } else { XA = SN.EnviarDocumento(ZIP, MS.ZIPEFileName); } #region Envio Correcto if (XA.Item2) { #region Resumenes-solo se enviara hasta el ticket, if (isSummary) { //aqui quite una parte DB.addRSunatResponse(MS.id, "ESX", "", XA.Item1, SummaryType); //aqui termina } #endregion #region Documentos else { if (UnZipCDR(MS, XA.Item1)) { DB.SP_InsertaCDR(CDR, DocumentName, "3"); GeneraLog.EnvioSunat01("CDR guardado correctamente"); GetNotes(DB, MS); int SNCode; if (int.TryParse(CDRcod, out SNCode)) { if (SNCode == 0) { GeneraLog.EnvioSunat01("Documento ha sido aceptado correctamente por SUNAT"); var res = DB.SP_ActualizaEstado(MS.id, "7", DocumentName); if (res < 0) { DB.SP_ActualizaEstado(MS.id, "7", DocumentName); } GenerateMAILPDF(MS, DB, "7"); } if (SNCode >= 2000 && SNCode <= 3999) { GeneraLog.EnvioSunat01("Documento ha sido rechazado por SUNAT"); DB.SP_ActualizaEstado(MS.id, "6", DocumentName); GenerateMAILPDF(MS, DB, "6"); } if (SNCode >= 4000 || CDRnotes.Count > 0) { GeneraLog.EnvioSunat01("Documento fue aceptado pero tiene observaciones"); DB.SP_ActualizaEstado(MS.id, "5", DocumentName); GenerateMAILPDF(MS, DB, "5"); } } } else { GeneraLog.EnvioSunat01($"Se produjo un error en la descompresión del documento"); } } #endregion } #endregion #region Error/Excepcion de Envio else { int ErrCode; string ErrSunat = (XA.Item1.Length > 3 ? XA.Item1.Substring(XA.Item1.Length - 4, 4) : XA.Item1); #region Error Conocido if (int.TryParse(ErrSunat, out ErrCode)) { if (isSummary) { if (ErrCode >= 2000 && ErrCode <= 3999) { MS.GeneraLog.EnvioSunat01($"El Documento ha sido rechazado por Sunat"); //DB.addRSunatResponse(MS.id, "6", $"{ErrCode.ToString()} - El Documento ha sido rechazado por Sunat", "", SummaryType); DB.addRSunatResponse(MS.id, "SRE", $"{ErrCode.ToString()} - El Documento ha sido rechazado por Sunat", "", SummaryType); } } else { if ("20|40".Contains(DocumentType)) { if (ErrCode == 2282) { MS.GeneraLog.EnvioSunat01($"El Documento ya ha sido enviado a Sunat anteriormente"); MS.GeneraLog.EnvioSunat01($"Actualizando estado en Base de Datos"); DB.SP_ActualizaEstado(MS.id, "7", DocumentName); DB.SP_InsertaMensajeRespuesta(MS.id, "0", $"El Comprobante numero {DocumentSplit[2]}-{DocumentSplit[3]}, ha sido aceptado"); } else { if (ErrCode >= 2000 && ErrCode <= 3999) { MS.GeneraLog.EnvioSunat01($"El Documento ha sido rechazado por Sunat"); DB.SP_ActualizaEstado(MS.id, "6", DocumentName); //Cambio del dia 10-05-2018 DB.SP_InsertaMensajeRespuesta_2(MS.id, XA.Item1); GenerateMAILPDF(MS, DB, "6"); } } } else { DB.SP_ActualizaEstado(MS.id, "4", DocumentName); } } } #endregion #region Error Desconocido else { if (isSummary) { } else { DB.SP_ActualizaEstado(MS.id, "4", DocumentName); } } #endregion } #endregion } #endregion } } else { GeneraLog.EnvioSunat01($"Se produjo un error en la compresión del documento"); GeneraLog.EnvioSunat01("= = = = FIN DE ENVÍO A SUNAT = = = ="); return; } } #endregion GeneraLog.EnvioSunat01("= = = = FIN DE ENVÍO A SUNAT = = = ="); GeneraLog.RegistraLog(DocumentName + ".txt"); }
public bool GenerateXML() { bool isGenerated = false; RAD = DBConnection.ObtieneResumenAnulados(); if (RAD.Count == 0) { MS.GeneraLog.IngresoBD01($"No se obtuvieron documentos anulados de la fecha {MS.SummaryDate}"); return(false); } RAC.TOT_DOC = RAD.Count; //getDocumentName(RAC.FEC_REF.ToString("yyyy-MM-dd")); getDocumentName(Convert.ToDateTime(MS.SummaryDate).ToString("yyyy-MM-dd")); MS.getFileNames(); try { MS.GeneraLog.GeneracionXML("----- Inicio de Generación de Archivo: " + MS.XMLIFileLocation); XmlSerializer mySerializer = new XmlSerializer(typeof(VoidedDocumentsType)); XmlSerializerNamespaces ns = getNamespaces(); XmlWriterSettings setting = getSettings(); VoidedDocumentsType voi = new VoidedDocumentsType(); voi.AccountingSupplierParty = getSupplierPartyType(); voi.Signature = getSignatureType(); voi.UBLVersionID = getUBLVersionID(); voi.CustomizationID = getCustomizationID(); voi.ID = getID(); //voi.IssueDate = getIssueDate(); voi.ReferenceDate = getReferenceDate(); voi.IssueDate = getIssueDate(voi.ReferenceDate.Value); voi.VoidedDocumentsLine = getVoidedDocumentsLine(); voi.UBLExtensions = getUBLExtensions(); StringWriterWithEncoding iso88591StringWriter = new StringWriterWithEncoding(ISO_8859_1); XmlSerializer serializer = new XmlSerializer(typeof(VoidedDocumentsType)); XmlWriter writerx = XmlWriter.Create(iso88591StringWriter, setting); serializer.Serialize(writerx, voi, ns); XMLI = iso88591StringWriter.ToString(); XMLI = XMLI.Replace("<", "<"); XMLI = XMLI.Replace(">", ">"); XMLI = XMLI.Replace("&", "&"); using (StreamWriter sw = new StreamWriter(MS.XMLIFileLocation, false, ISO_8859_1)) { sw.Write(XMLI); } SXMLI = GenerateStreamFromString(XMLI); isGenerated = true; } catch (Exception ex) { MS.GeneraLog.GeneracionXML("Ocurrió un error al momento de generar el XML Inicial"); MS.GeneraLog.GeneracionXML("Error: " + ex.Message); } return(isGenerated); }
public bool GenerateXML() { bool isGenerated = false; InsertaTC(); RBD = ordenaResumen(); if (RBD.Count == 0) { MS.GeneraLog.IngresoBD01($"No se obtuvieron boletas y/o documentos asociados de la fecha {MS.SummaryDate}"); return(false); } else { if (!DBConnection.ExchangueRateExists && DBConnection.DocumentDolarExists) { MS.GeneraLog.IngresoBD01($"No se ha configurado el tipo de cambio para el día {MS.SummaryDate}"); return(false); } } getDocumentName(); MS.getFileNames(); try { MS.GeneraLog.GeneracionXML("----- Inicio de Generación de Archivo: " + MS.XMLIFileLocation); XmlSerializer mySerializer = new XmlSerializer(typeof(SummaryDocumentsType)); XmlSerializerNamespaces ns = getNamespaces(); XmlWriterSettings setting = getSettings(); SummaryDocumentsType sum = new SummaryDocumentsType(); sum.AccountingSupplierParty = getSupplierPartyType(); sum.Signature = getSignatureType(); sum.UBLVersionID = getUBLVersionID(); sum.CustomizationID = getCustomizationID(); sum.ID = getID(); sum.IssueDate = getIssueDate(); sum.ReferenceDate = getReferenceDate(); sum.Note = getNote(); sum.SummaryDocumentsLine = getSummaryDocumentsLine(); sum.UBLExtensions = getUBLExtensions(); StringWriterWithEncoding iso88591StringWriter = new StringWriterWithEncoding(ISO_8859_1); XmlSerializer serializer = new XmlSerializer(typeof(SummaryDocumentsType)); XmlWriter writerx = XmlWriter.Create(iso88591StringWriter, setting); serializer.Serialize(writerx, sum, ns); XMLI = iso88591StringWriter.ToString(); XMLI = XMLI.Replace("<", "<"); XMLI = XMLI.Replace(">", ">"); XMLI = XMLI.Replace("&", "&"); using (StreamWriter sw = new StreamWriter(MS.XMLIFileLocation, false, ISO_8859_1)) { sw.Write(XMLI); } SXMLI = GenerateStreamFromString(XMLI); isGenerated = true; } catch (Exception ex) { MS.GeneraLog.GeneracionXML("Ocurrió un error al momento de generar el XML Inicial"); MS.GeneraLog.GeneracionXML("Error: " + ex.Message); } return(isGenerated); }
//public bool GenerateXML() public Extras.Common.Method.ListUtilClass GenerateXML(string TypeRC) { //ListDocs.ListBoletas = new List<RBoletasDetalle>(); ListDocs = new Extras.Common.Method.ListUtilClass(); bool isGenerated = false; //InsertaTC(); exchange rate RBD = ordenaResumen(TypeRC); var temp = new List <RBoletasDetalle>(); var temp_XGN = new List <RBoletasDetalle>(); var temp_NCD = new List <RBoletasDetalle>(); var temp_ANS = new List <RBoletasDetalle>(); foreach (var doc in RBD) { if (doc.SYSTEM_STATUS == "XGN") { if (doc.SUMMARY == 0) { temp_XGN.Add(doc); } } else if (doc.SYSTEM_STATUS == "ANS") { if (doc.VOIDED == 0) { temp_ANS.Add(doc); } if (doc.SUMMARY == 0) { temp_XGN.Add(doc); } } if (doc.TPO_CPE.Contains("07") || doc.TPO_CPE.Contains("08")) { temp_NCD.Add(doc); } } if (TypeRC == "ANS") { //temp = temp_ANS; foreach (var ans in temp_ANS) { if (ans.STATUS_RC_DOC != 3) { temp.Add(ans); } } } else if (TypeRC == "XGN") { foreach (var d in temp_XGN) { if (!d.TPO_CPE.Contains("07") && !d.TPO_CPE.Contains("08") && d.STATUS_RC_DOC < 1) { temp.Add(d); } } if (temp_NCD.Count > 0) { ListDocs.ListNotesDoc = temp_NCD; } //if(temp_ANS.Count > 0) //{ // ListDocs.ListBoletasLow = temp_ANS; //} //ListDocs.ListBoletasLow = temp_ANS; ListDocs.ListBoletasLow.Add(new RBoletasDetalle() { NUM_CPE = "" }); } else { foreach (var ncd in temp_NCD) { if (ncd.STATUS_RC_DOC <= 1) { temp.Add(ncd); } } //temp = temp_NCD; //if (temp_ANS.Count > 0) //{ // ListDocs.ListBoletasLow = temp_ANS; //} //ListDocs.ListBoletasLow = temp_ANS; ListDocs.ListBoletasLow.Add(new RBoletasDetalle() { NUM_CPE = "" }); } #region old ////if (TypeRC == "ANS") ////{ //// foreach (var b in RBD) //// { //// if (b.SYSTEM_STATUS.Contains(TypeRC) && b.VOIDED == 0) { temp.Add(b); } //// } ////} ////else if (TypeRC == "NCD") ////{ //// foreach (var b in RBD) //// { //// if (b.SYSTEM_STATUS.ToUpper().Contains("ANS")) //// { //// ListDocs.ListBoletasLow.Add(b); //// } //// if (!b.TPO_CPE.Contains("03") && (b.SUMMARY <= 0)) //// { //// temp.Add(b); //// } //// } ////} ////else ////{ //// foreach (var b in RBD) //// { //// if (b.SYSTEM_STATUS.ToUpper().Contains("ANS")) //// { //// ListDocs.ListBoletasLow.Add(b); //// } //// if (b.TPO_CPE == "07" || b.TPO_CPE == "08") //// { //// ListDocs.ListNotesDoc.Add(b); //// } //// if (b.SUMMARY == 0 && !b.TPO_CPE.Contains("07") && !b.TPO_CPE.Contains("08")) //// { //// temp.Add(b); //// } //// } ////} //if (TypeRC == "ANS") //{ // foreach (var b in RBD) // { // if (b.SYSTEM_STATUS.Contains(TypeRC) && b.VOIDED == 0) // { // temp.Add(b); // } // } //} //else //{ // foreach (var b in RBD) // { // if (b.SYSTEM_STATUS.ToUpper().Contains("ANS")) // { // ListDocs.ListBoletasLow.Add(b); // } // if (b.SUMMARY == 0) // { // temp.Add(b); // } // if (b.TPO_CPE == "07" || b.TPO_CPE == "08") // { // ListDocs.ListNotesDoc.Add(b); // } // } //} //foreach (var b in RBD) //{ //if (b.SYSTEM_STATUS.ToUpper().Contains("ANS")) //{ // ListDocs.ListBoletasLow.Add(b); //} //if (b.SYSTEM_STATUS.ToUpper().Contains(TypeRC)) //{ // temp.Add(b); //} //} #endregion #region old cant //if (temp.Count > 1000) //{ // var tmp = new List<RBoletasDetalle>(); // for (int i = 0; i < 1000; i++) // { // tmp.Add(temp[i]); // } // RBD = tmp; // ListDocs.CantDocs = temp.Count - 1000; //} //else //{ // RBD = temp; //} #endregion if (temp.Count > 500) { var tmp = new List <RBoletasDetalle>(); for (int i = 0; i < 500; i++) { tmp.Add(temp[i]); } RBD = tmp; ListDocs.CantDocs = temp.Count - 500; } else { RBD = temp; } if (RBD.Count == 0) { MS.GeneraLog.IngresoBD01($"No se obtuvieron boletas y/o documentos asociados de la fecha {MS.SummaryDate}"); //return false; return(ListDocs); } else { if (!DBConnection.ExchangueRateExists && DBConnection.DocumentDolarExists) { MS.GeneraLog.IngresoBD01($"No se ha configurado el tipo de cambio para el día {MS.SummaryDate}"); //return false; return(ListDocs); } } getDocumentName(); MS.getFileNames(); try { MS.GeneraLog.GeneracionXML("----- Inicio de Generación de Archivo: " + MS.XMLIFileLocation); XmlSerializer mySerializer = new XmlSerializer(typeof(SummaryDocumentsType)); XmlSerializerNamespaces ns = getNamespaces(); XmlWriterSettings setting = getSettings(); SummaryDocumentsType sum = new SummaryDocumentsType(); sum.AccountingSupplierParty = getSupplierPartyType(); sum.Signature = getSignatureType(); sum.UBLVersionID = getUBLVersionID(); sum.CustomizationID = getCustomizationID(); sum.ID = getID(); sum.IssueDate = getIssueDate(); sum.ReferenceDate = getReferenceDate(); sum.Note = getNote(); sum.SummaryDocumentsLine = getSummaryDocumentsLine(1, "", TypeRC); sum.UBLExtensions = getUBLExtensions(); StringWriterWithEncoding iso88591StringWriter = new StringWriterWithEncoding(ISO_8859_1); XmlSerializer serializer = new XmlSerializer(typeof(SummaryDocumentsType)); XmlWriter writerx = XmlWriter.Create(iso88591StringWriter, setting); serializer.Serialize(writerx, sum, ns); XMLI = iso88591StringWriter.ToString(); XMLI = XMLI.Replace("<", "<"); XMLI = XMLI.Replace(">", ">"); XMLI = XMLI.Replace("&", "&"); using (StreamWriter sw = new StreamWriter(MS.XMLIFileLocation, false, ISO_8859_1)) { sw.Write(XMLI); } SXMLI = GenerateStreamFromString(XMLI); isGenerated = true; } catch (Exception ex) { MS.GeneraLog.GeneracionXML("Ocurrió un error al momento de generar el XML Inicial"); MS.GeneraLog.GeneracionXML("Error: " + ex.Message); } //return isGenerated; return(ListDocs); }