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); }
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); }
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" })); }
/// <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; } }