private async void CrearXmlResumen()
    {
        try
        {
            vFechaXml  = "RC-" + Convert.ToString(DtpFecha.Value.Year);
            vFechaXml += Modfunc.Derecha("0" + Convert.ToString(DtpFecha.Value.Month), 2);
            vFechaXml += Modfunc.Derecha("0" + Convert.ToString(DtpFecha.Value.Day), 2);
            vFechaXml += "-004";

            ResumenDiarioNuevo ResumenDiario = new ResumenDiarioNuevo();

            ResumenDiario.IdDocumento     = vFechaXml;
            ResumenDiario.FechaEmision    = Convert.ToString(DtpFecha.Text);
            ResumenDiario.FechaReferencia = Convert.ToString(DtpFecha.Text);
            ResumenDiario.Emisor          = CrearEmisor(DtEmpresa);
            ResumenDiario.Resumenes       = new List <GrupoResumenNuevo>();

            for (int ii = 0; ii <= DtDocumentos.Rows.Count - 1; ii++)
            {
                decimal vDscto = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteDsctoGlobal"]) + Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteDsctoItem"]);

                GrupoResumenNuevo DocumentoResumenItem = new GrupoResumenNuevo();

                DocumentoResumenItem.Id                = 13 + 1;
                DocumentoResumenItem.TipoDocumento     = Convert.ToString(DtDocumentos.Rows[ii]["TipoDocumento"]);
                DocumentoResumenItem.Serie             = Convert.ToString(DtDocumentos.Rows[ii]["SerieDocumento"]);
                DocumentoResumenItem.CorrelativoInicio = Convert.ToInt32(DtDocumentos.Rows[ii]["NumeroDocumento"]);
                DocumentoResumenItem.CorrelativoFin    = Convert.ToInt32(DtDocumentos.Rows[ii]["NumeroDocumentoFinal"]);
                DocumentoResumenItem.Gravadas          = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteGravado"]);
                DocumentoResumenItem.Inafectas         = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteinafecto"]);
                DocumentoResumenItem.Exoneradas        = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteexonerado"]);
                DocumentoResumenItem.Gratuitas         = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteGratuitas"]);
                DocumentoResumenItem.TotalIsc          = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteisc"]);
                DocumentoResumenItem.TotalIgv          = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteIgv"]);
                DocumentoResumenItem.TotalDescuentos   = vDscto;
                DocumentoResumenItem.TotalVenta        = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteventa"]);

                ResumenDiario.Resumenes.Add(DocumentoResumenItem);
            }
            string _metodoApi = "api/GenerarResumenDiario/v1";
            var    response   = await _client.PostAsJsonAsync(_metodoApi, ResumenDiario);

            var respuesta = await response.Content.ReadAsAsync <DocumentoResponse>();

            if (!respuesta.Exito)
            {
                throw new ApplicationException(respuesta.MensajeError);
            }

            String vRutaXml = Convert.ToString(DtEmpresa.Rows[0]["CarpetaEnviosXml"]);
            RutaArchivo = Convert.ToString(DtEmpresa.Rows[0]["EmpresaRuc"]) + "-" + vFechaXml;
            RutaArchivo = Path.Combine(vRutaXml, $"{RutaArchivo}.xml");

            File.WriteAllBytes(RutaArchivo, Convert.FromBase64String(respuesta.TramaXmlSinFirma));
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
Exemplo n.º 2
0
        public void ArmarResumenElectronico()
        {
            try
            {
                DocumentoVentaGP docGP = new DocumentoVentaGP();
                docGP.GetDatosResumenBoletas(this.Sopnumbe, this.Soptype);

                _resumenElectronico = new ResumenDiarioNuevo()
                {
                    IdDocumento     = docGP.ResumenCab.numResumenDiario,
                    FechaEmision    = docGP.ResumenCab.docdate.ToString(FormatoFecha), //DateTime.Today.ToString(FormatoFecha),
                    FechaReferencia = docGP.ResumenCab.docdate.ToString(FormatoFecha),
                    Emisor          = new Contribuyente()
                    {
                        NroDocumento    = docGP.ResumenCab.emisorNroDoc,
                        TipoDocumento   = docGP.ResumenCab.emisorTipoDoc,
                        Direccion       = docGP.ResumenCab.emisorDireccion,
                        Urbanizacion    = docGP.ResumenCab.emisorUrbanizacion,
                        Departamento    = docGP.ResumenCab.emisorDepartamento,
                        Provincia       = docGP.ResumenCab.emisorProvincia,
                        Distrito        = docGP.ResumenCab.emisorDistrito,
                        NombreComercial = docGP.ResumenCab.emisorNombre,
                        NombreLegal     = docGP.ResumenCab.emisorNombre,
                        Ubigeo          = docGP.ResumenCab.emisorUbigeo
                    },
                    Resumenes = new List <GrupoResumenNuevo>()
                };

                int i = 1;
                foreach (vwCfdiGeneraResumenDiario re in docGP.LDocResumenLineas)
                {
                    var grn = new GrupoResumenNuevo()
                    {
                        Id                    = i,
                        TipoDocumento         = re.tipoDocumento,
                        IdDocumento           = re.sopnumbe,
                        NroDocumentoReceptor  = re.receptorNroDoc,
                        TipoDocumentoReceptor = re.receptorTipoDoc,
                        CodigoEstadoItem      = 1,
                        Moneda                = re.moneda,
                        TotalVenta            = Convert.ToDecimal(re.total),
                        TotalDescuentos       = Convert.ToDecimal(re.totalDescuento),
                        Gratuitas             = Convert.ToDecimal(re.totalGratuito),
                        Gravadas              = Convert.ToDecimal(re.totalIvaImponible),
                        Exoneradas            = Convert.ToDecimal(re.totalExonerado),
                        Inafectas             = Convert.ToDecimal(re.totalInafecta),
                        TotalIgv              = Convert.ToDecimal(re.totalIva),

                        DocumentoRelacionado     = (re.tipoDocumento == "07" || re.tipoDocumento == "08") ? re.sopnumbeTo : null,
                        TipoDocumentoRelacionado = (re.tipoDocumento == "07" || re.tipoDocumento == "08") ? re.tipoDocumentoTo : null
                                                   //IdDocumento = re.serie,
                                                   //Serie = re.serie,
                                                   //CorrelativoInicio = Convert.ToInt32(re.iniRango),
                                                   //CorrelativoFin = Convert.ToInt32(re.finRango),
                    };

                    _resumenElectronico.Resumenes.Add(grn);

                    i++;
                }
            }
            catch (Exception)
            { throw; }
        }
Exemplo n.º 3
0
        private async void CrearXmlResumen2()
        {
            try
            {
                vFechaXml  = "RC-" + Convert.ToString(DtpFechaEnvioDoc.Value.Year);
                vFechaXml += ModFunc.Derecha("0" + Convert.ToString(DtpFechaEnvioDoc.Value.Month), 2);
                vFechaXml += ModFunc.Derecha("0" + Convert.ToString(DtpFechaEnvioDoc.Value.Day), 2);
                vFechaXml += "-00" + Convert.ToString(DtDocumentos.Rows[0]["item"]);

                ResumenDiarioNuevo ResumenDiario = new ResumenDiarioNuevo
                {
                    IdDocumento     = vFechaXml,
                    FechaEmision    = Convert.ToString(DtpFechaEnvioDoc.Text),
                    FechaReferencia = Convert.ToString(DtpFechaDoc.Text),
                    Emisor          = CrearEmisor(DtEmpresa),

                    Resumenes = new List <GrupoResumenNuevo>()
                };

                for (int ii = 0; ii <= DtDocumentos.Rows.Count - 1; ii++)
                {
                    decimal vDscto         = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteDsctoGlobal"]);
                    string  vNroDocumento  = Convert.ToString(DtDocumentos.Rows[ii]["clienteID"]);
                    string  vTipoIdentidad = Convert.ToString(DtDocumentos.Rows[ii]["IdentidadID"]);
                    string  vNombreLegal   = Convert.ToString(DtDocumentos.Rows[ii]["ClienterazonSocial"]);

                    GrupoResumenNuevo DocumentoResumenItem = new GrupoResumenNuevo();
                    string            vIdDocumento         = DocumentoResumenItem.Serie = Convert.ToString(DtDocumentos.Rows[ii]["SerieDocumento"]) + "-";
                    vIdDocumento += DtDocumentos.Rows[ii]["NumeroDocumento"];

                    DocumentoResumenItem.Id                    = ii + 1;
                    DocumentoResumenItem.TipoDocumento         = Convert.ToString(DtDocumentos.Rows[ii]["DocumentoID"]);
                    DocumentoResumenItem.IdDocumento           = vIdDocumento;
                    DocumentoResumenItem.NroDocumentoReceptor  = vNroDocumento;
                    DocumentoResumenItem.TipoDocumentoReceptor = vTipoIdentidad;
                    DocumentoResumenItem.CodigoEstadoItem      = 1;

                    string vNroModifica = Convert.ToString(DtDocumentos.Rows[ii]["SeriedocumentoModifica"]) + "-" + Convert.ToString(DtDocumentos.Rows[ii]["NumeroDocumentoModifica"]);
                    if (DocumentoResumenItem.TipoDocumento == "07" || DocumentoResumenItem.TipoDocumento == "08")
                    {
                        DocumentoResumenItem.TipoDocumentoRelacionado = Convert.ToString(DtDocumentos.Rows[ii]["TipoDocumentoModifica"]);
                        DocumentoResumenItem.DocumentoRelacionado     = vNroModifica;
                    }

                    DocumentoResumenItem.Moneda = "PEN";

                    DocumentoResumenItem.Gravadas            = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteGravado"]);
                    DocumentoResumenItem.Inafectas           = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteinafecto"]);
                    DocumentoResumenItem.Exoneradas          = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteexonerado"]);
                    DocumentoResumenItem.Gratuitas           = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteGratuitas"]);
                    DocumentoResumenItem.TotalIsc            = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteisc"]);
                    DocumentoResumenItem.TotalIgv            = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteIgv"]);
                    DocumentoResumenItem.TotalDescuentos     = vDscto;
                    DocumentoResumenItem.TotalVenta          = Convert.ToDecimal(DtDocumentos.Rows[ii]["TotalImporteventa"]);
                    DocumentoResumenItem.TotalOtrosImpuestos = 0;
                    DocumentoResumenItem.CodigoEstadoItem    = 1;
                    DocumentoResumenItem.Exportacion         = 0;

                    ResumenDiario.Resumenes.Add(DocumentoResumenItem);
                }
                string _metodoApi = "api/GenerarResumenDiario/v2";
                var    response   = await _client.PostAsJsonAsync(_metodoApi, ResumenDiario);

                var respuesta = await response.Content.ReadAsAsync <DocumentoResponse>();

                if (!respuesta.Exito)
                {
                    throw new ApplicationException(respuesta.MensajeError);
                }

                vRutaArchivoXML = vFechaXml;
                vRutaArchivoXML = Path.Combine(vRutaXml, $"{vRutaArchivoXML}.xml");

                File.WriteAllBytes(vRutaArchivoXML, Convert.FromBase64String(respuesta.TramaXmlSinFirma));
                ModFunc.ActualizaItemDia(Ctr_AyuEmpresas.Codigo, DtpFechaDoc.Text, VGCnxSqlE);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 4
0
        public ResumenDiario Data(List <Data_Documentos> data_Documentos)
        {
            DateTime        dateTime = DateTime.Now;
            ResumenDiario   resumenDiario;
            ReadGeneralData readGeneralData = new ReadGeneralData();

            try
            {
                Data_CabeceraDocumento cabeceraDocumento = new Data_CabeceraDocumento(data_Documentos[0].IdCabeceraDocumento);
                cabeceraDocumento.Read_CabeceraDocumento();

                Data_Contribuyente data_Emisor = new Data_Contribuyente(data_Documentos[0].IdEmisor);
                data_Emisor.Read_Contribuyente();

                int    numeracion = 0;
                string mes        = dateTime.Month < 10 ? $"0{dateTime.Month}" : dateTime.Month.ToString();
                string dia        = dateTime.Day < 10 ? $"0{dateTime.Day}"   : dateTime.Day.ToString();
                try
                {
                    numeracion = readGeneralData.GetScalarValueINT("[dbo].[Query_Scalar_GetValue_CantidadDocsDia]", "@IdDatosFox", data_Documentos[0].IdDatosFox);
                }
                catch (Exception)
                {
                    numeracion++;
                }

                resumenDiario = new ResumenDiario()      //  Documento principal
                {
                    IdDocumento     = $"RC-{dateTime.Year}{mes}{dia}-{numeracion}",
                    FechaEmision    = dateTime.ToString(),
                    FechaReferencia = data_Documentos[0].FechaEmision,
                    Emisor          = data_Emisor,
                    Resumenes       = new List <GrupoResumenNuevo>()
                };

                int contador = 1;
                foreach (var data_Documento in data_Documentos)
                {
                    Data_CabeceraDocumento data_CabeceraDocumento = new Data_CabeceraDocumento(data_Documento.IdCabeceraDocumento);
                    data_CabeceraDocumento.Read_CabeceraDocumento();

                    Data_Contribuyente data_Receptor = new Data_Contribuyente(data_CabeceraDocumento.IdReceptor);
                    data_Receptor.Read_Contribuyente();

                    var resumen = new GrupoResumenNuevo()
                    {
                        Id              = contador,
                        TipoDocumento   = data_Documento.TipoDocumento,
                        Serie           = data_Documento.SerieCorrelativo,
                        Receptor        = data_Receptor,
                        TotalVenta      = data_CabeceraDocumento.ImporteTotalVenta,
                        Moneda          = data_CabeceraDocumento.Moneda,
                        Gravadas        = data_CabeceraDocumento.Gravadas,
                        Exoneradas      = data_CabeceraDocumento.Exoneradas,
                        Inafectas       = data_CabeceraDocumento.Inafectas,
                        Exportaciones   = data_CabeceraDocumento.Exportaciones,
                        Gratuitas       = data_CabeceraDocumento.Gratuitas,
                        TotalDescuentos = data_CabeceraDocumento.TotalDescuento,
                    };

                    Data_DocumentoRelacionado   data_DocumentoRelacionado = new Data_DocumentoRelacionado(data_Documento.IdCabeceraDocumento);
                    List <DocumentoRelacionado> documentoRelacionados     = data_DocumentoRelacionado.Read_DocumentoRelacionado();
                    if (documentoRelacionados.Count > 0)
                    {
                        resumen.DocumentoRelacionado = documentoRelacionados[0].NroDocumento ?? string.Empty;      // Sólo habrá un doc relacionado para cada boleta
                    }
                    Data_Discrepancia   data_Discrepancia = new Data_Discrepancia(data_Documento.IdCabeceraDocumento);
                    List <Discrepancia> discrepancias     = data_Discrepancia.Read_DiscrepanciaDocumento();
                    if (discrepancias.Count > 0)
                    {
                        resumen.CodigoEstadoItem = Convert.ToInt32(discrepancias[0].Tipo ?? string.Empty);      // // en la documentación dice que es el valor del tipo de discrepancia catalogo 9
                    }
                    else
                    {
                        resumen.CodigoEstadoItem = 1;       // Poca información respecto a lo que va aquí
                    }
                    #region TotalImpuestos
                    Data_TotalImpuesto   data_TotalImpuesto = new Data_TotalImpuesto(data_Documento.IdCabeceraDocumento);
                    List <TotalImpuesto> totalImpuestos     = data_TotalImpuesto.Read_TotalImpuestos(1);     //  El parámetro -> 1 <- es indicativo de que es por cada línea

                    foreach (var st_totalImpuesto in totalImpuestos)
                    {
                        Data_SubTotalImpuesto    data_SubTotalImpuesto = new Data_SubTotalImpuesto(st_totalImpuesto.IdTotalImpuestos);
                        List <SubTotalImpuestos> subTotalImpuestos     = data_SubTotalImpuesto.Read_SubTotalImpuesto();
                        st_totalImpuesto.SubTotalesImpuestos = subTotalImpuestos;
                    }
                    resumen.TotalImpuestos = totalImpuestos;
                    #endregion TotalImpuestos

                    resumenDiario.Resumenes.Add(resumen);
                    contador++;
                }
            }
            catch (Exception ex)
            {
                resumenDiario = new ResumenDiario();
            }

            return(resumenDiario);
        }