Exemplo n.º 1
0
	private void Load (string file)
	{
		this.filename = file;
		FileStream f = File.OpenRead (file);
		this.header = this.ReadHeader (f);
		f.Close ();
	}
Exemplo n.º 2
0
            private void Load(string file)
            {
                this.filename = file;
                FileStream f = File.OpenRead(file);

                this.header = this.ReadHeader(f);
                f.Close();
            }
Exemplo n.º 3
0
 /// <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));
     }
 }
Exemplo n.º 4
0
        /// <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));
        }
Exemplo n.º 5
0
        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
            });
        }
Exemplo n.º 6
0
                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);
                    }
                }
Exemplo n.º 7
0
        /// <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>();
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 10
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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
		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);
			}
		}
Exemplo n.º 13
0
        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);
        }