private void Load (string file) { this.filename = file; FileStream f = File.OpenRead (file); this.header = this.ReadHeader (f); f.Close (); }
private void Load(string file) { this.filename = file; FileStream f = File.OpenRead(file); this.header = this.ReadHeader(f); f.Close(); }
/// <summary> /// XMLs for resumen. /// </summary> /// <param name="header">The header.</param> /// <returns>XmlResult.</returns> public XmlResult ToXml(SummaryHeader header) { try { return(XmlForaResumenInternal(header)); } catch (Exception e) { return(ForException(e)); } }
/// <summary> /// Sends the specified resumen. /// </summary> /// <param name="resumen">The resumen.</param> /// <returns>BillResult.</returns> public async Task <BillResult> Send(SummaryHeader resumen) { var xmlRes = _xmlGenerator.ToXml(resumen); if (!xmlRes.Success) { return(xmlRes); } return(await SendSumm(xmlRes.Path, xmlRes.Content)); }
private XmlResult XmlForaResumenInternal(SummaryHeader header) { var res = _xmlGenerator.GenerarDocumentoSummary(header, true); return(new XmlResult { Success = res.Success, Description = res.Error, Path = res.FileName, Content = res.Content, Code = res.Success ? null : CodeStatus.ConErrores }); }
public bool MoveNext() { ++index; if (index == 0) { f = File.OpenRead(s.filename); header = s.ReadHeader(f); } if (index >= header.count) { if (f != null) { f.Close(); f = null; } return(false); } else { info = null; while (info == null && index < header.count) { try { info = s.ReadMessageInfo(f); } catch (IOException) { Log.Warn("Unexpected end of file. Skipping rest of messages in {0}", s.filename); info = null; index = header.count; // just in case if (f != null) { f.Close(); f = null; } break; } catch (Exception e) { Log.Warn("Skipping bogus message " + "[file={0}, index={1}, error={2}]", s.filename, index, e.ToString()); info = null; ++index; } } return(info != null); } }
/// <summary> /// /// </summary> /// <param name="fileName">文件名</param> /// <param name="workDirectory">工作目录</param> public Writer(string fileName, string workDirectory = "") { WorkDirectory = workDirectory; if (string.IsNullOrEmpty(WorkDirectory)) { WorkDirectory = Path.GetDirectoryName(fileName); } if (string.IsNullOrEmpty(WorkDirectory)) { throw new Exception("未指定工作目录"); } Header = new SummaryHeader { FileName = Path.GetFileName(fileName) }; fileList = new List <string>(); }
/// <summary> /// Genera un documento XML para Resumen Diario. /// </summary> /// <param name="summaryHeaderEntity">Entidad de Resumen</param> /// <param name="version2">version 2</param> /// <returns>Retorna el XML generado.</returns> public XmlFileResult GenerarDocumentoSummary(SummaryHeader summaryHeaderEntity, bool version2 = false) { try { #region Filename var id = $"RC-{DateTime.Today:yyyyMMdd}-{summaryHeaderEntity.CorrelativoArchivo}"; var xmlFilename = summaryHeaderEntity.RucEmisor + "-" + id; #endregion #region Gen Summary AmountType.TlsDefaultCurrencyID = summaryHeaderEntity.CodigoMoneda; var summaryDoc = new SummaryDocumentsType { ID = id, CustomizationID = version2 ? "1.1" : "1.0", // 2018 = 1.1 ReferenceDate = summaryHeaderEntity.FechaEmision, IssueDate = DateTime.Today.Date, UBLExtensions = new[] { new UBLExtensionType { ExtensionContent = new AdditionalsInformationType() }, }, Signature = UtilsXmlDoc.GetSignature(summaryHeaderEntity), AccountingSupplierParty = UtilsXmlDoc.GetInfoEmisor(summaryHeaderEntity), SummaryDocumentsLine = UtilsXmlDoc.GetSummaryLines(summaryHeaderEntity.DetallesDocumento, version2) }; #endregion return(FromDocument(summaryDoc, xmlFilename)); } catch (Exception ex) { return(FromException(ex)); } }
public void GenerateSummaryV2Test() { var summary = new SummaryHeader { TipoDocumentoIdentidadEmisor = TipoDocumentoIdentidad.RegistroUnicoContribuyentes, RucEmisor = "20600995805", FechaEmision = DateTime.Now.Date, NombreRazonSocialEmisor = "ABLIMATEX EXPORT SAC", NombreComercialEmisor = "C-ABLIMATEX EXPORT SAC", CorrelativoArchivo = "01", CodigoMoneda = "PEN", DetallesDocumento = new List <SummaryDetail> { new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, Documento = "B001-1", TipoDocumentoIdentidadCliente = TipoDocumentoIdentidad.DocumentoNacionalIdentidad, NroDocCliente = "99887766", Estado = EstadoResumen.Adicionar, Total = 100.422M, Percepcion = new PerceptionSummaryType { CodRegimen = RegimenPercepcion.VENTA_INTERNA, Tasa = 2, Monto = 2, MontoTotal = 102, MontoBase = 100 }, Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = 98232.00M, }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 20, }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 232, } }, OtroImporte = new List <TotalImporteExtType> { new TotalImporteExtType { Indicador = true, Monto = 5, } }, Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = 17681.76M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 1200, TipoTributo = TipoTributo.ISC_EXC } } }, new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, Documento = "B001-00000001", TipoDocumentoIdentidadCliente = TipoDocumentoIdentidad.DocumentoNacionalIdentidad, Estado = EstadoResumen.Anulado, NroDocCliente = "55443322", Total = 200, Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = 78223, }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 24423, }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 45, } }, OtroImporte = new List <TotalImporteExtType>(), Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = 14080.14M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 0, TipoTributo = TipoTributo.ISC_EXC } } } } }; var res = _generator.GenerarDocumentoSummary(summary, true); if (!res.Success) { Trace.WriteLine(res.Error); } Assert.IsTrue(res.Success); Assert.IsNotNull(res.Content); Assert.IsTrue(res.Content.Length > 0); }
public void GenerateSummaryTest() { var summary = new SummaryHeader { TipoDocumentoIdentidadEmisor = TipoDocumentoIdentidad.RegistroUnicoContribuyentes, RucEmisor = "20600995805", FechaEmision = DateTime.Now.Date, NombreRazonSocialEmisor = "ABLIMATEX EXPORT SAC", NombreComercialEmisor = "C-ABLIMATEX EXPORT SAC", CorrelativoArchivo = "01", CodigoMoneda = "PEN", DetallesDocumento = new List <SummaryDetail> { new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, SerieDocumento = "BA98", NroCorrelativoInicial = "456", NroCorrelativoFinal = "764", Total = 100, Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = 98232.00M, }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 20, }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 232, } }, OtroImporte = new List <TotalImporteExtType> { new TotalImporteExtType { Indicador = true, Monto = 5, } }, Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = 17681.76M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 1200, TipoTributo = TipoTributo.ISC_EXC } } }, new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, SerieDocumento = "BC23", NroCorrelativoInicial = "789", NroCorrelativoFinal = "932", Total = 200, Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = 78223, }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 24423, }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 45, } }, OtroImporte = new List <TotalImporteExtType>(), Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = 14080.14M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 0, TipoTributo = TipoTributo.ISC_EXC } } } } }; var res = _generator.GenerarDocumentoSummary(summary); if (!res.Success) { Trace.WriteLine(res.Error); } Assert.IsTrue(res.Success); Assert.IsNotNull(res.Content); Assert.IsTrue(res.Content.Length > 0); File.WriteAllBytes("20600995805-RC-20171128-01.xml", res.Content); }
public SummaryHeader Build() { var head = new SummaryHeader { TipoDocumentoIdentidadEmisor = TipoDocumentoIdentidad.RegistroUnicoContribuyentes, RucEmisor = _company.Ruc, FechaEmision = DateTime.Now.Date, NombreRazonSocialEmisor = _company.RazonSocial, NombreComercialEmisor = _company.NombreComercial, CorrelativoArchivo = new Random().Next(1, 999).ToString("D3"), CodigoMoneda = "PEN", DetallesDocumento = new List <SummaryDetail>(_lines) }; var mountGrav = 100M; foreach (var item in Enumerable.Range(1, _lines)) { head.DetallesDocumento.Add(new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, TipoDocumentoIdentidadCliente = TipoDocumentoIdentidad.DocumentoNacionalIdentidad, NroDocCliente = "99887766", SerieDocumento = "B00" + item, NroCorrelativoInicial = "456", NroCorrelativoFinal = "764", Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = mountGrav }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 100M }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 100M } }, OtroImporte = new List <TotalImporteExtType> { new TotalImporteExtType { Indicador = true, Monto = 5M } }, Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = mountGrav * 0.18M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 100M, TipoTributo = TipoTributo.ISC_EXC } } }); } return(head); }
public bool MoveNext () { ++index; if (index == 0) { f = File.OpenRead (s.filename); header = s.ReadHeader (f); } if (index >= header.count) { if (f != null) { f.Close (); f = null; } return false; } else { info = null; while (info == null && index < header.count) { try { info = s.ReadMessageInfo (f); } catch (IOException) { Log.Warn ("Unexpected end of file. Skipping rest of messages in {0}", s.filename); info = null; index = header.count; // just in case if (f != null) { f.Close (); f = null; } break; } catch (Exception e) { Log.Warn ("Skipping bogus message " + "[file={0}, index={1}, error={2}]", s.filename, index, e.ToString()); info = null; ++index; } } return (info != null); } }
private SummaryHeader CreateSummary() { var summary = new SummaryHeader { TipoDocumentoIdentidadEmisor = TipoDocumentoIdentidad.RegistroUnicoContribuyentes, RucEmisor = "20600995805", FechaEmision = DateTime.Now.Date, NombreRazonSocialEmisor = "ABLIMATEX EXPORT SAC", NombreComercialEmisor = "C-ABLIMATEX EXPORT SAC", CorrelativoArchivo = "01", CodigoMoneda = "PEN", DetallesDocumento = new List <SummaryDetail> { new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, SerieDocumento = "BA98", NroCorrelativoInicial = "456", NroCorrelativoFinal = "764", Total = 100, Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = 98232.00M, }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 20, }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 232, } }, OtroImporte = new List <TotalImporteExtType> { new TotalImporteExtType { Indicador = true, Monto = 5, } }, Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = 17681.76M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 1200, TipoTributo = TipoTributo.ISC_EXC } } }, new SummaryDetail { TipoDocumento = TipoDocumentoElectronico.Boleta, SerieDocumento = "BC23", NroCorrelativoInicial = "789", NroCorrelativoFinal = "932", Total = 200, Importe = new List <TotalImporteType> { new TotalImporteType { TipoImporte = TipoValorVenta.Gravado, Monto = 78223, }, new TotalImporteType { TipoImporte = TipoValorVenta.Exonerado, Monto = 24423, }, new TotalImporteType { TipoImporte = TipoValorVenta.Inafecto, Monto = 45, } }, OtroImporte = new List <TotalImporteExtType>(), Impuesto = new List <TotalImpuestosType> { new TotalImpuestosType { Monto = 14080.14M, TipoTributo = TipoTributo.IGV_VAT }, new TotalImpuestosType { Monto = 0, TipoTributo = TipoTributo.ISC_EXC } } } } }; return(summary); }