// GET: api/ZipCode/98052 public ZipCodeEntity Get(string id) { try { long start = DateTime.Now.Ticks; var context = new ZipCodeManager(); ZipCode.DAL.ZipCodeEntity code = context.GetZipCode(id); var ts = new TimeSpan(DateTime.Now.Ticks - start); Trace.WriteLine(string.Format( "Zip code {0} details received in {1} ms from database", id, ts.TotalMilliseconds)); return(code); } finally { Trace.Flush(); } }
/// <summary> /// CancelDocumetAsync /// </summary> /// <returns></returns> public async Task <CancelPayrollStampingResult> CancelDocumetAsync(CancelDocumentParams cancelDocumentParams) { var cancelPayrollStampingResult = new CancelPayrollStampingResult(); try { //Get datetime from ZipCode of Employer var zipCodeManager = new ZipCodeManager(cancelDocumentParams.ZipCodes); (var zipcode, var datetimeFromZipCode) = await zipCodeManager.GetZipCode(cancelDocumentParams.IssuerZipCode); //Fill the cancelation object Cancelacion cancelacion = new Cancelacion(); cancelacion.RfcEmisor = cancelDocumentParams.IssuerRFC; cancelacion.Fecha = DateTime.Parse(string.Format("{0:s}", datetimeFromZipCode), CultureInfo.InvariantCulture); var cancelacionFolios = new List <CancelacionFolios>(); var uuids = cancelDocumentParams.CancelDocumentParamsDetails.Select(p => p.UUID).ToList(); uuids.ForEach(p => cancelacionFolios.Add(new CancelacionFolios() { UUID = p.ToString().ToLower() })); cancelacion.Folios = cancelacionFolios.ToArray(); //Creates the cancelationXML var xmlCancelation = createCancelationXML(cancelDocumentParams, cancelacion); //Call PAC for cancelation var stampResult = new CancelDocumentResult <ICFDINomProvider>(); stampResult.CancelationXML = xmlCancelation; stampResult.InstanceID = cancelDocumentParams.InstanceID; IPACProvider pACProvider = FactoryPACProvider.CreateInstanceFromConfig(); var cancelationPACResult = await pACProvider.CancelStampingDocumentAsync(stampResult); if (cancelationPACResult.WithErrors) { cancelPayrollStampingResult.WithErrors = true; cancelPayrollStampingResult.Message = cancelationPACResult.Details; } else { cancelPayrollStampingResult.WithErrors = false; cancelPayrollStampingResult.CancelacionXMLRequest = cancelationPACResult.CancelationXML; cancelPayrollStampingResult.CancelacionXMLAcknowledgeResponse = cancelationPACResult.CancelationAcknowledgmentReceipt; //Fill each UUID with the proper status var acuse = SerializerXml.DeserializeObject <Acuse>(cancelationPACResult.CancelationAcknowledgmentReceipt); acuse.Folios.ForEach(p => { var detail = new CancelPayrollStampingResultDetail(); /* * 201 - El folio se ha cancelado con éxito. * 202 - El CFDI ya había sido cancelado previamente. * 203 - UUID no corresponde al emisor. * 204 - El CFDI no aplica para cancelación. * 205 - El UUID no existe o no ha sido procesado por el SAT. * 402 - El Contribuyente no se encuentra el la LCO o la validez de obligaciones se reporta como negativa. */ if (p.EstatusUUID == "201" || p.EstatusUUID == "202") //estatus good { statusCancelationCodes.TryGetValue(p.EstatusUUID, out string message); detail.Message = $"{p.EstatusUUID} : {message}"; detail.UUID = Guid.Parse(p.UUID); detail.PayrollStampingResultStatus = PayrollStampingResultStatus.Success; } else { statusCancelationCodes.TryGetValue(p.EstatusUUID, out string message); detail.Message = $"Error al cancelar {p.EstatusUUID} : {message}"; detail.UUID = Guid.Parse(p.UUID); detail.PayrollStampingResultStatus = PayrollStampingResultStatus.Fail; } cancelPayrollStampingResult.CancelPayrollStampingResultDetails.Add(detail); }); } } catch (Exception ex) { cancelPayrollStampingResult.WithErrors = true; cancelPayrollStampingResult.Message = $"Ocurrió un error no controlado en la cancelación: {ex.Message}"; } return(cancelPayrollStampingResult); }