Ejemplo n.º 1
0
        public async Task <string> EnviarDTE([FromBody] EnvioDTEpara datos)
        {
            var lista = new List <Detalle>();

            if (datos.detalles != null)
            {
                foreach (Hist_plu venta in datos.detalles)
                {
                    venta.Cantidad = datos.detalles.Count(p => p.CodigoPLU == venta.CodigoPLU);
                }
                var ventas = datos.detalles.GroupBy(p => p.CodigoPLU).Select(y => y.First());


                int i = 0;
                foreach (Hist_plu venta in ventas)
                {
                    i++;
                    lista.Add(PluToDetalle(venta, i));
                }
            }

            EnvioDTE dte = new EnvioDTE();

            EnvioDteApi datosEnvio = new EnvioDteApi {
                detalles         = lista, CmnaDest = datos.CmnaDest,
                tipoDocumento    = datos.tipoDocumento,
                IndTraslado      = datos.IndTraslado, TpoDocLiq = datos.TpoDocLiq, numFolioReferencia = datos.numFolioReferencia,
                tipoDocumentoRef = datos.tipoDocumentoRef, CodRef = datos.CodRef, FmaPago = datos.FmaPago, CdgTraslado = datos.CdgTraslado
            };
            string res = await dte.EnviarDetalles(datosEnvio);

            return(res);
        }
Ejemplo n.º 2
0
        private int SaveFiles(XDocument xDocument)
        {
            string response = "";
            string nameFolder;
            string nameFile;
            // DESERIALIZE.
            EnvioDTE xmlObjeto = HSerialize.ENVIODTE_To_Object(xDocument);

            if (xmlObjeto != null)
            {
                foreach (DTEDefType dte in xmlObjeto.SetDTE.DTE)
                {
                    DTEDefTypeDocumento document = (DTEDefTypeDocumento)dte.Item;
                    string[]            emisor   = document.Encabezado.Emisor.RUTEmisor.Split('-');
                    if (document.Encabezado.IdDoc.TipoDTE == global::DTEType.Item33 || document.Encabezado.IdDoc.TipoDTE == global::DTEType.Item34)
                    {
                        document.Encabezado.IdDoc.Folio = document.Encabezado.IdDoc.Folio.TrimStart(new char[] { '0' }); // REMOVE ZERO LEFT.
                        try
                        {
                            using (RegistroReclamoDteServiceEndpointService dateTimeDte = new RegistroReclamoDteServiceEndpointService(TokenSii))
                            {
                                int tipo = Convert.ToInt32(document.Encabezado.IdDoc.TipoDTE);
                                response = dateTimeDte.consultarFechaRecepcionSii(emisor.GetValue(0).ToString(),
                                                                                  emisor.GetValue(1).ToString(),
                                                                                  tipo.ToString(),
                                                                                  document.Encabezado.IdDoc.Folio);
                            }

                            if (response.Length != 0)
                            {
                                DateTime timeResponse = DateTime.Parse(string.Format(CultureInfo.InvariantCulture, "{0:D}", response));
                                // 2020\06\76470581-5
                                nameFolder = timeResponse.Year + @"\" + timeResponse.Month + @"\" + document.Encabezado.Receptor.RUTRecep;
                                // 15357870_33_8888
                                nameFile = document.Encabezado.Emisor.RUTEmisor + "__" + Convert.ToInt32(document.Encabezado.IdDoc.TipoDTE).ToString() + "__" + document.Encabezado.IdDoc.Folio;
                                SaveXmlInFolder(nameFolder, nameFile, dte);
                            }
                            else
                            {
                                // Errors. // dejar carpeta folder en 2020/5
                                nameFolder = document.Encabezado.IdDoc.FchEmis.Year + @"\" + document.Encabezado.IdDoc.FchEmis.Month;
                                nameFile   = document.Encabezado.Emisor.RUTEmisor + "__" + Convert.ToInt32(document.Encabezado.IdDoc.TipoDTE).ToString() + "__" + document.Encabezado.IdDoc.Folio;
                                SaveXmlInFolder(nameFolder + @"\Errors\", nameFile, dte);
                            }
                        }
                        catch (Exception)
                        {
                            // ERROR.
                            return(1);
                        }
                    }
                }
            }
            // SUCCESS.
            return(0);
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> AnularVenta(EnvioDteApi datos)
        {
            try
            {
                List <Detalle> ventas = new List <Detalle>();


                EnvioDTE dte = new EnvioDTE();

                EnvioDteApi datosEnvio = new EnvioDteApi
                {
                    detalles           = datos.detalles,
                    CmnaDest           = datos.CmnaDest,
                    tipoDocumento      = datos.tipoDocumento,
                    IndTraslado        = datos.IndTraslado,
                    TpoDocLiq          = datos.TpoDocLiq,
                    numFolioReferencia = datos.numFolioReferencia,
                    tipoDocumentoRef   = datos.tipoDocumentoRef,
                    CodRef             = datos.CodRef,
                    FmaPago            = datos.FmaPago,
                    CdgTraslado        = datos.CdgTraslado
                };
                string res = await dte.EnviarDetalles(datosEnvio);

                //foreach (Hist_fn venta in _context.Hist_fn.Where(p=>p.numeroFolio==datos.numFolio))
                //{
                //    venta.Anulada = true;
                //    await _context.SaveChangesAsync();
                //}
            }
            catch (Exception ex)
            {
                return(BadRequest(new { resStatus = false, mensaje = ex.Message }));
            }
            return(Ok(new { resStatus = true, mensaje = "Venta anulada con exito" }));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Carga el objeto EnvioDTE. Un envío por cliente.
        /// </summary>
        /// <param name="lDocumentos">lista de cfds</param>
        public void prepara(List <CFDComprobanteFiscalDigital> lDocumentos, string tipoDoc)
        {
            try
            {
                _envio                 = new EnvioDTE();
                _envio.SetDTE          = new EnvioDTESetDTE();
                _envio.SetDTE.Caratula = new EnvioDTESetDTECaratula();
                _envio.SetDTE.DTE      = new DTEDefType[1];

                _envio.SetDTE.ID = _setId;
                _envio.SetDTE.Caratula.version      = Convert.ToDecimal("1.0");
                _envio.SetDTE.Caratula.RutEmisor    = _modeloDte.dteDoc.Encabezado.Emisor.RUTEmisor;     //rut de la compañía
                _envio.SetDTE.Caratula.RutEnvia     = _certPersonaEnvia.idImpuesto;                      //rut de la persona que envía
                _envio.SetDTE.Caratula.RutReceptor  = _modeloDte.idPersonaRecibe;                        //rut de la persona que recibe
                _envio.SetDTE.Caratula.FchResol     = Convert.ToDateTime(_certPersonaEnvia.fchResol);
                _envio.SetDTE.Caratula.NroResol     = _certPersonaEnvia.nroResol;
                _envio.SetDTE.Caratula.TmstFirmaEnv = _ts;

                if (!tipoDoc.Equals(String.Empty))                                                      //uno por contenedor
                {
                    _envio.SetDTE.Caratula.SubTotDTE    = new EnvioDTESetDTECaratulaSubTotDTE[1];
                    _envio.SetDTE.Caratula.SubTotDTE[0] = new EnvioDTESetDTECaratulaSubTotDTE()
                    {
                        TpoDTE = (DOCType)Enum.Parse(typeof(DOCType), tipoDoc),
                        NroDTE = "1"
                    };
                }
                else
                {
                    var docsAgrupados = lDocumentos
                                        .GroupBy(t =>
                                                 new
                    {
                        //cliente = t.modeloDte.dteDoc.Encabezado.Receptor.RUTRecep,
                        cliente = t.modeloDte.idPersonaRecibe,
                        tipoDoc = t.modeloDte.dteDoc.Encabezado.IdDoc.TipoDTE
                    })
                                        //.Where(grouping => grouping.Key.cliente.Equals(_modeloDte.dteDoc.Encabezado.Receptor.RUTRecep))
                                        .Where(grouping => grouping.Key.cliente.Equals(_modeloDte.idPersonaRecibe))
                                        .Select(subTot =>
                                                new
                    {
                        tDoc = subTot.Key.tipoDoc,
                        nDoc = subTot.Count()
                    });

                    _envio.SetDTE.Caratula.SubTotDTE = new EnvioDTESetDTECaratulaSubTotDTE[docsAgrupados.Count()];
                    int i = 0;
                    foreach (var item in docsAgrupados)
                    {
                        _envio.SetDTE.Caratula.SubTotDTE[i] = new EnvioDTESetDTECaratulaSubTotDTE()
                        {
                            TpoDTE = (DOCType)Enum.Parse(typeof(DOCType), item.tDoc.ToString()),
                            NroDTE = item.nDoc.ToString()
                        };
                        i++;
                    }
                }
            }
            catch (Exception pr)
            {
                sMsj = pr.Message + " [EnvioDteModel.prepara] " + pr.StackTrace;
                iErr++;
                throw;
            }
        }