public void GeneraFicheros(string _NomFichero) { if (File.Exists(_NomFichero)) { string _TrabajarCon = "CORE"; //string _TrabajarCon = "BUSI"; // Leeremos la primera línea del fichero, en la que hay un campo que indica el tipo // de facturas que contiene. Posteriormente, llamaremos a la función correspondiente // para generar el XML correcto. StreamReader _Lector = new StreamReader(_NomFichero); string _Cabecera = _Lector.ReadLine(); _Lector.Close(); string[] _CamposReg = _Cabecera.Split(';'); string _TipoFichero = _CamposReg[4]; switch (_TipoFichero) { case "EMI": { if (_TrabajarCon == "CORE") { EmitidasEnvel FuncionesEmiEnvel = new EmitidasEnvel(); FuncionesEmiEnvel.GenerarXMLEmitidasEnvel(_NomFichero); } else { Emitidas FuncionesEmi = new Emitidas(); FuncionesEmi.GenerarXMLEmitidas(_NomFichero); } break; } case "REC": { if (_TrabajarCon == "CORE") { RecibidasEnvel FuncionesRecEnvel = new RecibidasEnvel(); FuncionesRecEnvel.GenerarXMLRecibidasEnvel(_NomFichero); } else { Recibidas FuncionesRec = new Recibidas(); FuncionesRec.GenerarXMLRecibidas(_NomFichero); } break; } case "INT": { if (_TrabajarCon == "CORE") { IntracomEnvel FuncionesIntEnvel = new IntracomEnvel(); FuncionesIntEnvel.GenerarXMLIntracomEnvel(_NomFichero); } else { Intracom FuncionesInt = new Intracom(); FuncionesInt.GenerarXMLIntracom(_NomFichero); } break; } default: { string _msg = "Este fichero no se puede tratar en este programa"; MessageBox.Show(_msg, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; } } } else { string _msg = "El fichero indicado no existe"; MessageBox.Show(_msg, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void GenerarXMLEmitidas(string _NombreFichero) { Emitidas funcion = new Emitidas(); string _NomFicheroWrk = _NombreFichero; try { //ARInvoicesBatch _LoteFactEmitidas = new ARInvoicesBatch(); Batch _LoteFactEmitidas = new Batch(BatchActionKeys.LR, BatchActionPrefixes.SuministroLR, BatchTypes.FacturasEmitidas); ARInvoice _FactEmitidaAct = new ARInvoice(); Party _Titular = new Party(); using (StreamReader _Lector = new StreamReader(_NomFicheroWrk)) { while (_Lector.Peek() > -1) { string _RegFichero = _Lector.ReadLine(); if (!String.IsNullOrEmpty(_RegFichero)) { // Con creamos un Array con los distintos campos que contiene el registro separados por ";" string[] _CamposReg = _RegFichero.Split(';'); string _TipoReg = _CamposReg[0]; switch (_TipoReg) { case "CABE": lineas++; _Titular = funcion.TratarRegCabecera(_CamposReg); _LoteFactEmitidas.Titular = _Titular; // Con esto ya no hace falta tener que obtener el valor del campo y posteriormente tener que revisar que valor ponemos en cada // caso con un switch. Ahorramos líneas de código. _LoteFactEmitidas.CommunicationType = (CommunicationType)Enum.Parse(typeof(CommunicationType), _CamposReg[3]); break; case "FACT": lineas++; if (_NuevaFact) // Si se trata de una nueva factura, añadiremos la 'antigua' al fichero { _LoteFactEmitidas.BatchItems.Add(_FactEmitidaAct); _NuevaFact = false; } // Se trata de una factura no Sujeta, de manera que no tendrá registros 'FISC' y se tendrá que añadir a // la lista correspondiente. if (!string.IsNullOrWhiteSpace(_CamposReg[19]) || !string.IsNullOrWhiteSpace(_CamposReg[20])) { _NuevaFact = true; } _FactEmitidaAct = new ARInvoice(); _FactEmitidaAct = funcion.TratarFactEmitida(_CamposReg, _Titular); break; case "RECT": lineas++; _FactEmitidaAct = funcion.AgregarFactRectifica(_CamposReg, _FactEmitidaAct); break; case "FISC": lineas++; _NuevaFact = true; _FactEmitidaAct = funcion.AgregarDesgloseIVA(_CamposReg, _FactEmitidaAct); break; case "FINI": lineas++; // Tenemos que grabar la última factura tratada, ya que sino no se incluirá en el XML _LoteFactEmitidas.BatchItems.Add(_FactEmitidaAct); // Procedemos a generar el XML final. DateTime _FechaActual = DateTime.Today; //Obtenemos la fecha actual sin la hora string nombrefichero = "SII_Emitidas_" + _Titular.TaxIdentificationNumber + "_" + _FechaActual.ToString("yyyyMMdd") + ".XML"; string XmlResult = "C:/Temp/" + nombrefichero; _LoteFactEmitidas.GetXml(XmlResult); string _msg = "Fichero XML generado: " + XmlResult; MessageBox.Show(_msg, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); break; default: string _msgAviso = "Tipo Registro incorrecto: " + _TipoReg; MessageBox.Show(_msgAviso, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; } } } } } catch (Exception ex) { string _msgError = "Error: " + ex.Message + "(linea: " + lineas + ")"; MessageBox.Show(_msgError, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }