public int VerificaCSDRevocado(string serieCert, string fecha) { //var lcoLogic = new LcoLogic(); var lcoLogic = new Operaciones_IRFC(); vLCO lco = lcoLogic.SearchLCOByNoCertificado(serieCert); try { if (lco == null) { return(304); } DateTime fechaEmision = Convert.ToDateTime(fecha); if (lco.ValidezObligaciones.Equals("0", StringComparison.CurrentCultureIgnoreCase) || (fechaEmision < lco.FechaInicio || DateTime.Now > lco.FechaFinal) || !lco.EstatusCertificado.Contains("A")) { return(304); } return(0); } catch (Exception ee) { Logger.Error("", ee); return(304); } }
/* * public empresa GetByRfcMultipleUsuario(string usuario)//obtiene la empresa por medio del usuario * { * try * { * using (var db = new NtLinkLocalServiceEntities()) * { * Sistemas sist = db.Sistemas.FirstOrDefault(c => c.Email == usuario); * var empresa = db.empresa.FirstOrDefault(e => e.idSistema == sist.IdSistema); * return empresa; * } * } * catch (Exception ee) * { * Logger.Error(ee); * if (ee.InnerException != null) * Logger.Error(ee.InnerException); * return null; * } * }*/ //------------------------------------------------------------------------------------- private bool Validar(empresa e) { //TODO: Validar los campos requeridos y generar excepcion { if (string.IsNullOrEmpty(e.RazonSocial)) { throw new FaultException("La Razón Social no puede ir vacía"); } if (string.IsNullOrEmpty(e.RFC)) { throw new FaultException("El RFC no puede ir vacío"); } if (string.IsNullOrEmpty(e.Email)) { throw new FaultException("El campo Email es Obligatorio"); } if (string.IsNullOrEmpty(e.Direccion)) { throw new FaultException("El campo Calle es Obligatorio"); } if (string.IsNullOrEmpty(e.Ciudad)) { throw new FaultException("El campo Municipio es Obligatorio"); } if (string.IsNullOrEmpty(e.Estado)) { throw new FaultException("El campo Estado es Obligatorio"); } if (string.IsNullOrEmpty(e.RegimenFiscal)) { throw new FaultException("El campo Regimen Fiscal es Obligatorio"); } if (string.IsNullOrEmpty(e.CP)) { throw new FaultException("El campo Codigo Postal es Obligatorio"); } Regex regex = new Regex( @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*"); if (!regex.IsMatch(e.Email)) { throw new FaultException("El campo Email esta mal formado"); } Regex reg = new Regex("^[A-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z,0-9]{2}[0-9,A]$"); if (!reg.IsMatch(e.RFC)) { throw new FaultException("El RFC es inválido"); } //LcoLogic lco = new LcoLogic(); Operaciones_IRFC lco = new Operaciones_IRFC(); var rfcLco = lco.SearchLCOByRFC(e.RFC); if (rfcLco == null) { throw new FaultException("El Rfc no se encuentra en la lista de contribuyentes con obligaciones"); } } return(true); }
private bool Validar(Distribuidores d) { //TODO: Validar los campos requeridos y generar excepcion { if (string.IsNullOrEmpty(d.Nombre)) { throw new FaultException("La Razón Social no puede ir vacía"); } if (string.IsNullOrEmpty(d.Email)) { throw new FaultException("El campo Email es Obligatorio"); } if (string.IsNullOrEmpty(d.Direccion)) { throw new FaultException("El campo Calle es Obligatorio"); } if (string.IsNullOrEmpty(d.Ciudad)) { throw new FaultException("El campo Municipio es Obligatorio"); } if (string.IsNullOrEmpty(d.Estado)) { throw new FaultException("El campo Estado es Obligatorio"); } if (string.IsNullOrEmpty(d.Cp)) { throw new FaultException("El campo Código Postal es Obligatorio"); } Regex reg = new Regex("^[A-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z,0-9]{2}[0-9,A]$"); if (!reg.IsMatch(d.Rfc)) { throw new FaultException <ApplicationException>(new ApplicationException("El RFC es inválido"), "El RFC es inválido"); } Regex regex = new Regex( @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*"); if (!regex.IsMatch(d.Email)) { throw new FaultException("El campo Email esta mal formado"); } if (d.IdDistribuidor == 0 && Existe(d)) { throw new FaultException("El RFC ya fue capturado"); } // LcoLogic lco = new LcoLogic(); Operaciones_IRFC lco = new Operaciones_IRFC(); var rfcLco = lco.SearchLCOByRFC(d.Rfc); if (rfcLco == null) { throw new FaultException("El Rfc no se encuentra en la lista de contribuyentes con obligaciones"); } } return(true); }
//------------------------------------------------------------------------------------- public int ValidaRFCLCO(string rfc) { try { //var lcoLogic = new LcoLogic(); var lcoLogic = new Operaciones_IRFC(); vLCO lco = lcoLogic.SearchLCOByRFC(rfc); return(lco == null ? 402 : 0); } catch (Exception ee) { Logger.Error("", ee); return(402); } }
public int VerificaCSDRevocado(string serieCert, DateTime fecha, string version) { var lcoLogic = new LcoLogic(); var lcoLogic2 = new Operaciones_IRFC(); if (version == "3.2") { vLCO lco = lcoLogic2.SearchLCOByNoCertificado(serieCert); try { if (lco == null) { return(304); } if (lco.ValidezObligaciones.Equals("0", StringComparison.CurrentCultureIgnoreCase) || (fecha < lco.FechaInicio || fecha > lco.FechaFinal) || !lco.EstatusCertificado.Contains("A")) { return(304); } return(0); } catch (Exception ee) { Logger.Error("", ee); return(304); } } else { var lco = lcoLogic.SearchCsdBySerie(serieCert, fecha); try { if (lco == null) { return(304); } return(0); } catch (Exception ee) { Logger.Error("", ee); return(304); } } }
public bool ValidaCSDEmisor(byte[] certificado) { try { X509Certificate2 cer = new X509Certificate2(certificado); if (certificado != null) { if (cer.SerialNumber != null) { string serialNumber = cer.SerialNumber.Trim(); string a = serialNumber; for (int i = 0; i < a.Length; i++) { if (i < serialNumber.Length) { serialNumber = serialNumber.Remove(i, 1); } } Operaciones_IRFC o = new Operaciones_IRFC(); vLCO valor = o.CSDValidar(serialNumber); //RfcLco valor = CSDValidar(serialNumber); if (valor != null) { return(true); } } } } catch (Exception ee) { Logger.Error(ee); return(false); } return(false); }
//--------------------------------------------------------------------------------------------- public string ProcesarPago(Comprobante com, ServicioLocal.Business.Complemento.Pagos Pag, Pagoo.Comprobante c) { string result; if (com.TipoDeComprobante != "P") { result = "CRP101 - El valor del campo TipoDeComprobante debe ser \"P\""; } else if (c.SubTotal != "0") { result = "CRP102 - El valor del campo SubTotal debe ser cero \"0\"."; } else if (com.Moneda != "XXX") { result = "CRP103 - El valor del campo Moneda debe ser \"XXX\"."; } else if (com.FormaPagoSpecified) { result = "CRP104 - El campo FormaPago no se debe registrar en el CFDI."; } else if (com.MetodoPagoSpecified) { result = "CRP105 - El campo MetodoPago no se debe registrar en el CFDI."; } else if (!string.IsNullOrEmpty(com.CondicionesDePago)) { result = "CRP106 - El campo CondicionesDePago no se debe registrar en el CFDI."; } else if (com.DescuentoSpecified) { result = "CRP107 - El campo Descuento no se debe registrar en el CFDI."; } else if (com.TipoCambioSpecified) { result = "CRP108 - El campo TipoCambio no se debe registrar en el CFDI."; } else if (c.Total != "0") { result = "CRP109 - El valor del campo Total debe ser cero \"0\"."; } else if (com.Receptor != null && com.Receptor.UsoCFDI != "P01") { result = "CRP110 - El valor del campo UsoCFDI debe ser \"P01\"."; } else { if (com.Conceptos != null) { if (com.Conceptos.Count <ComprobanteConcepto>() != 1) { result = "CRP111 - Solo debe existir un Concepto en el CFDI. "; return(result); } foreach (ComprobanteConcepto conp in com.Conceptos) { if (conp.Impuestos != null) { result = "CRP112 - No se deben registrar apartados dentro de Conceptos"; return(result); } if (conp.ComplementoConcepto != null) { result = "CRP112 - No se deben registrar apartados dentro de Conceptos"; return(result); } if (conp.CuentaPredial != null) { result = "CRP112 - No se deben registrar apartados dentro de Conceptos"; return(result); } if (conp.InformacionAduanera != null) { result = "CRP112 - No se deben registrar apartados dentro de Conceptos"; return(result); } if (conp.Parte != null) { result = "CRP112 - No se deben registrar apartados dentro de Conceptos"; return(result); } if (conp.ClaveProdServ != "84111506") { result = "CRP113 - El valor del campo ClaveProdServ debe ser \"84111506\"."; return(result); } if (!string.IsNullOrEmpty(conp.NoIdentificacion)) { result = "CRP114 - El campo NoIdentificacion no se debe registrar en el CFDI."; return(result); } if (conp.Cantidad != 1m) { result = "CRP115 - El valor del campo Cantidad debe ser \"1\"."; return(result); } if (conp.ClaveUnidad != "ACT") { result = "CRP116 - El valor del campo ClaveUnidad debe ser \"ACT\"."; return(result); } if (!string.IsNullOrEmpty(conp.Unidad)) { result = "CRP117 - El campo Unidad no se debe registrar en el CFDI."; return(result); } if (conp.Descripcion != "Pago") { result = "CRP118 - El valor del campo Descripcion debe ser \"Pago\"."; return(result); } if (conp.ValorUnitario != 0m) { result = "CRP119 - El valor del campo ValorUnitario debe ser cero \"0\"."; return(result); } if (conp.Importe != 0m) { result = "CRP120 - El valor del campo Importe debe ser cero \"0\"."; return(result); } if (conp.DescuentoSpecified) { result = "CRP121 - El campo Descuento no se debe registrar en el CFDI."; return(result); } } foreach (Pagoo.ComprobanteConcepto conp2 in c.Conceptos) { if (conp2.ValorUnitario != "0") { result = "CRP119 - El valor del campo ValorUnitario debe ser cero \"0\"."; return(result); } if (conp2.Importe != "0") { result = "CRP120 - El valor del campo Importe debe ser cero \"0\"."; return(result); } if (conp2.Cantidad != "1") { result = "CRP115 - El valor del campo Cantidad debe ser \"1\"."; return(result); } } } if (com.Impuestos != null) { result = "CRP122 - No se debe registrar el apartado de Impuestos en el CFDI."; } else { foreach (PagosPago pagos in Pag.Pago) { if (pagos.FormaDePagoP == "99") { result = "CRP201 - El valor del campo FormaDePagoP debe ser distinto de \"99\"."; return(result); } if (pagos.MonedaP == "XXX") { result = "CRP202 - El campo MonedaP debe ser distinto de \"XXX\""; return(result); } if (pagos.MonedaP != "MXN") { if (!pagos.TipoCambioPSpecified) { result = "CRP203 - El campo TipoCambioP se debe registrar."; return(result); } } else if (pagos.TipoCambioPSpecified) { result = "CRP204 - El campo TipoCambioP no se debe registrar."; return(result); } OperacionesCatalogos o9 = new OperacionesCatalogos(); CatalogosSAT.c_Moneda mone = o9.Consultar_Moneda(pagos.MonedaP); if (mone != null) { string varia = mone.Variacion; OperacionesCatalogos o10 = new OperacionesCatalogos(); Divisas divisa = o10.Consultar_TipoDivisa(pagos.MonedaP); if (divisa != null) { decimal inferior = this.CalculoInferiorPorcentajeMoneda(divisa.PesosDivisa, (int)Convert.ToInt16(varia)); decimal superior = this.CalculoSuperiorPorcentajeMoneda(divisa.PesosDivisa, (int)Convert.ToInt16(varia)); if (pagos.TipoCambioP < inferior) { if (string.IsNullOrEmpty(com.Confirmacion)) { result = "CRP205 - Cuando el valor del campo TipoCambio se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion."; return(result); } } if (pagos.TipoCambioP > superior) { if (string.IsNullOrEmpty(com.Confirmacion)) { result = "CRP205 - Cuando el valor del campo TipoCambioP se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion"; return(result); } } } } decimal tot = 0m; if (pagos.DoctoRelacionado == null) { result = "CRP000 - El numero de elementos DoctoRelacionado debe ser mayor a cero"; return(result); } if (pagos.DoctoRelacionado.Count <PagosPagoDoctoRelacionado>() == 0) { result = "CRP000 - El numero de elementos DoctoRelacionado debe ser mayor a cero"; return(result); } PagosPagoDoctoRelacionado[] doctoRelacionado = pagos.DoctoRelacionado; for (int i = 0; i < doctoRelacionado.Length; i++) { PagosPagoDoctoRelacionado doc = doctoRelacionado[i]; if (doc.ImpPagadoSpecified) { tot += doc.ImpPagado; } } if (pagos.Monto <= 0m) { result = "CRP207 - El valor del campo Monto no es mayor que cero \"0\"."; return(result); } decimal MontoDocumentos = pagos.Monto; if (pagos.MonedaP != "MXN") { MontoDocumentos *= pagos.TipoCambioP; MontoDocumentos = decimal.Round(MontoDocumentos, mone.Decimales.Value, MidpointRounding.AwayFromZero); } if (tot > MontoDocumentos) { result = "CRP206 - La suma de los valores registrados en el campo ImpPagado de los apartados DoctoRelacionado no es menor o igual que el valor del campo Monto."; return(result); } string mon = pagos.Monto.ToString(); if (mon != null) { if (mon != "0") { string[] split = mon.Split(".".ToCharArray()); if (split.Count <string>() <= 1) { result = "CRP208 - El valor del campo Monto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaP."; return(result); } if (split[1].Count <char>() != (int)Convert.ToInt16(mone.Decimales)) { result = "CRP208 - El valor del campo Monto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaP."; return(result); } } } OperacionesCatalogos o11 = new OperacionesCatalogos(); CatalogosSAT.c_TipoDeComprobante TCP = o11.Consultar_TipoDeComprobante(com.TipoDeComprobante); if (TCP != null) { decimal monto = pagos.Monto; long? valor_máximo = TCP.Valor_máximo; if (monto > valor_máximo.GetValueOrDefault() && valor_máximo.HasValue) { if (string.IsNullOrEmpty(com.Confirmacion)) { result = "CRP209 - Cuando el valor del campo Monto se encuentre fuera de los límites establecidos, debe existir el campo Confirmacion"; return(result); } } } if (!string.IsNullOrEmpty(pagos.RfcEmisorCtaOrd)) { if (pagos.RfcEmisorCtaOrd != "XEXX010101000") { Operaciones_IRFC r = new Operaciones_IRFC(); vI_RFC t = r.Consultar_IRFC(pagos.RfcEmisorCtaOrd); if (t == null) { result = "CRP210 - El RFC del campo RfcEmisorCtaOrd no se encuentra en la lista de RFC."; return(result); } } else if (string.IsNullOrEmpty(pagos.NomBancoOrdExt)) { result = "CRP211 - El campo NomBancoOrdExt se debe registrar."; return(result); } } if (pagos.FormaDePagoP != "02" && pagos.FormaDePagoP != "03" && pagos.FormaDePagoP != "04" && pagos.FormaDePagoP != "05" && pagos.FormaDePagoP != "06" && pagos.FormaDePagoP != "28" && pagos.FormaDePagoP != "29" && !string.IsNullOrEmpty(pagos.CtaOrdenante)) { result = "CRP212 - El campo CtaOrdenante no se debe registrar."; return(result); } if (!string.IsNullOrEmpty(pagos.CtaOrdenante)) { OperacionesCatalogos o10 = new OperacionesCatalogos(); CatalogosSAT.c_FormaPago formaPago = o10.Consultar_FormaPago(pagos.FormaDePagoP); if (formaPago.PatroncuentaBeneficiaria != "No" && formaPago.PatroncuentaBeneficiaria != "Opcional") { if (!this.validarExpresion(formaPago.PatroncuentaBeneficiaria, pagos.CtaOrdenante)) { result = "CRP213 - El campo CtaOrdenante no cumple con el patrón requerido."; return(result); } } } if (pagos.FormaDePagoP != "02" && pagos.FormaDePagoP != "03" && pagos.FormaDePagoP != "04" && pagos.FormaDePagoP != "05" && pagos.FormaDePagoP != "28" && pagos.FormaDePagoP != "29") { if (!string.IsNullOrEmpty(pagos.RfcEmisorCtaBen)) { result = "CRP214 - El campo RfcEmisorCtaBen no se debe registrar."; return(result); } if (!string.IsNullOrEmpty(pagos.CtaBeneficiario)) { result = "CRP215 - El campo CtaBeneficiario no se debe registrar."; return(result); } } if (pagos.FormaDePagoP != "03" && pagos.TipoCadPagoSpecified) { result = "CRP216 - El campo TipoCadPago no se debe registrar. "; return(result); } int tDoc = 0; if (pagos.DoctoRelacionado != null) { tDoc = pagos.DoctoRelacionado.Count <PagosPagoDoctoRelacionado>(); } if (pagos.DoctoRelacionado != null) { doctoRelacionado = pagos.DoctoRelacionado; for (int i = 0; i < doctoRelacionado.Length; i++) { PagosPagoDoctoRelacionado doc = doctoRelacionado[i]; if (doc.MonedaDR == "XXX") { result = "CRP217 - El valor del campo MonedaDR debe ser distinto de \"XXX\""; return(result); } if (doc.MonedaDR != pagos.MonedaP) { if (!doc.TipoCambioDRSpecified) { result = "CRP218 - El campo TipoCambioDR se debe registrar."; return(result); } } else if (doc.TipoCambioDRSpecified) { result = "CRP219 - El campo TipoCambioDR no se debe registrar."; return(result); } if (doc.MonedaDR == "MXN" && pagos.MonedaP != "MXN" && doc.TipoCambioDR != 1m) { result = "CRP220 - El campo TipoCambioDR debe ser \"1\"."; return(result); } if (doc.MetodoDePagoDR == "PPD") { if (!doc.ImpSaldoAntSpecified) { result = "CRP234 - El campo ImpSaldoAnt se debe registrar."; return(result); } } if (tDoc > 1 && !doc.ImpPagadoSpecified) { result = "CRP235 - El campo ImpPagado se debe registrar. "; return(result); } if (tDoc == 1 && doc.TipoCambioDRSpecified && !doc.ImpPagadoSpecified) { result = "CRP235 - El campo ImpPagado se debe registrar. "; return(result); } if (doc.ImpSaldoAntSpecified) { if (doc.ImpSaldoAnt <= 0m) { result = "CRP221 - El campo ImpSaldoAnt debe mayor a cero."; return(result); } string impSal = doc.ImpSaldoAnt.ToString(); if (impSal != null) { if (impSal != "0") { string[] split = impSal.Split(".".ToCharArray()); if (split.Count <string>() <= 1) { result = "CRP222 - El valor del campo ImpSaldoAnt debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR."; return(result); } if (split[1].Count <char>() != (int)Convert.ToInt16(mone.Decimales)) { result = "CRP222 - El valor del campo ImpSaldoAnt debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR."; return(result); } } } } if (doc.ImpPagadoSpecified) { if (doc.ImpPagado <= 0m) { result = "CRP223 - El campo ImpPagado debe mayor a cero."; return(result); } string impPa = doc.ImpPagado.ToString(); if (impPa != null) { if (impPa != "0") { string[] split = impPa.Split(".".ToCharArray()); if (split.Count <string>() <= 1) { result = "CRP224 - El valor del campo ImpPagado debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR."; return(result); } if (split[1].Count <char>() != (int)Convert.ToInt16(mone.Decimales)) { result = "CRP224 - El valor del campo ImpPagado debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR."; return(result); } } } } if (doc.ImpSaldoInsolutoSpecified) { string impSalI = doc.ImpSaldoInsoluto.ToString(); if (impSalI != null) { if (impSalI != "0") { string[] split = impSalI.Split(".".ToCharArray()); if (split.Count <string>() <= 1) { result = "CRP225 - El valor del campo ImpSaldoInsoluto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR."; return(result); } if (split[1].Count <char>() != (int)Convert.ToInt16(mone.Decimales)) { result = "CRP225 - El valor del campo ImpSaldoInsoluto debe tener hasta la cantidad de decimales que soporte la moneda registrada en el campo MonedaDR."; return(result); } } } if (doc.ImpSaldoInsoluto < 0m) { result = "CRP226 - El campo ImpSaldoInsoluto debe ser mayor o igual a cero y calcularse con la suma de los campos ImSaldoAnt menos el ImpPagado o el Monto."; return(result); } if (doc.ImpSaldoInsoluto != doc.ImpSaldoAnt - doc.ImpPagado) { result = "CRP226 - El campo ImpSaldoInsoluto debe ser mayor o igual a cero y calcularse con la suma de los campos ImSaldoAnt menos el ImpPagado o el Monto."; return(result); } } } } if (pagos.TipoCadPagoSpecified) { if (pagos.CertPago == null) { result = "CRP227 - El campo CertPago se debe registrar."; return(result); } if (string.IsNullOrEmpty(pagos.CadPago)) { result = "CRP229 - El campo CadPago se debe registrar."; return(result); } if (pagos.SelloPago == null) { result = "CRP231 - El campo SelloPago se debe registrar. "; return(result); } } else { if (pagos.CertPago != null) { result = "CRP228 - El campo CertPago no se debe registrar."; return(result); } if (!string.IsNullOrEmpty(pagos.CadPago)) { result = "CRP230 - El campo CadPago no se debe registrar."; return(result); } if (pagos.SelloPago != null) { result = "CRP232 - El campo SelloPago no se debe registrar."; return(result); } } if (pagos.DoctoRelacionado != null) { doctoRelacionado = pagos.DoctoRelacionado; for (int i = 0; i < doctoRelacionado.Length; i++) { PagosPagoDoctoRelacionado doc = doctoRelacionado[i]; if (doc.MetodoDePagoDR == "PPD") { if (string.IsNullOrEmpty(doc.NumParcialidad)) { result = "CRP233 - El campo NumParcialidad se debe registrar."; return(result); } if (!doc.ImpSaldoInsolutoSpecified) { result = "CRP236 - El campo ImpSaldoInsoluto se debe registrar."; return(result); } } } } if (pagos.Impuestos != null) { result = "CRP237 - No debe existir el apartado de Impuestos."; return(result); } if (pagos.FormaDePagoP != "02" && pagos.FormaDePagoP != "03" && pagos.FormaDePagoP != "04" && pagos.FormaDePagoP != "05" && pagos.FormaDePagoP != "06" && pagos.FormaDePagoP != "28" && pagos.FormaDePagoP != "29" && !string.IsNullOrEmpty(pagos.RfcEmisorCtaOrd)) { result = "CRP238 - El campo RfcEmisorCtaOrd no se debe registrar."; return(result); } if (!string.IsNullOrEmpty(pagos.CtaBeneficiario)) { OperacionesCatalogos o10 = new OperacionesCatalogos(); CatalogosSAT.c_FormaPago formaPago = o10.Consultar_FormaPago(pagos.FormaDePagoP); if (formaPago.PatroncuentaBeneficiaria != "No" && formaPago.PatroncuentaBeneficiaria != "Opcional") { if (!this.validarExpresion(formaPago.PatroncuentaBeneficiaria, pagos.CtaBeneficiario)) { result = "CRP239 - El campo CtaBeneficiario no cumple con el patrón requerido."; return(result); } } } } result = "0"; } } return(result); }//-------------------------------------------------------------------------------------
public string ProcesarSPT(ServiciosPlataformasTecnologicas s, ServicioLocal.Business.ComplementoRetencion.Retenciones retencion) { try { if (retencion.Version != "1.0") { return("SPT101 - El atributo Version tiene un valor inválido."); } if (retencion.CveRetenc != ComplementoRetencion.c_Retenciones.Item26) { return("SPT102 - El atributo CveRetenc contiene una clave distinta a \"26\" (Servicios mediante Plataformas Tecnológicas)"); } if (!string.IsNullOrEmpty(retencion.DescRetenc)) { return("SPT103 - Se registró el atributo DescRetenc."); } if (retencion.Receptor != null) { if (retencion.Receptor.Nacionalidad != ComplementoRetencion.RetencionesReceptorNacionalidad.Nacional) { return("SPT104 - El complemento “Servicios Plataformas Tecnológicas” no debe existir cuando el valor del atributo Nacionalidad es distinto de \"Nacional\"."); } } if (retencion.Receptor.Item != null) { try { retencion.Receptor.Extranjero = (RetencionesReceptorExtranjero)retencion.Receptor.Item; } catch (Exception ex) { } try { retencion.Receptor.Nacional = (RetencionesReceptorNacional)retencion.Receptor.Item; } catch (Exception ex) { } if (retencion.Receptor.Nacional != null) { Operaciones_IRFC r = new Operaciones_IRFC(); vI_RFC t = r.Consultar_IRFC(retencion.Receptor.Nacional.RFCRecep); if (t == null) { return("SPT105 - El atributo RFCReceptor es inválido según la lista de RFC inscritos no cancelados en el SAT (l_RFC)."); } } } if (retencion.Periodo.MesFin != retencion.Periodo.MesIni) { return("SPT106 - El valor del nodo MesFin es diferente al valor del atributo MesIni o mayor al mes en curso."); } var fecha = DateTime.Now; if (retencion.Periodo.MesFin > fecha.Month) { return("SPT106 - El valor del nodo MesFin es diferente al valor del atributo MesIni o mayor al mes en curso."); } if (retencion.Periodo.Ejerc < 2019) { return("SPT107 - El valor del atributo Ejerc es menor a 2019 o mayor al valor del año en curso."); } if (retencion.Periodo.Ejerc > fecha.Year) { return("SPT107 - El valor del atributo Ejerc es menor a 2019 o mayor al valor del año en curso."); } if (retencion.Totales.montoTotOperacion != s.MonTotServSIVA) { return("SPT108 - El valor del atributo montoTotOperacion es diferente al valor registrado en el atributo MonTotServSIVA."); } if (retencion.Totales.montoTotGrav != retencion.Totales.montoTotOperacion) { return("SPT109 - El valor del atributo montoTotGrav es diferente al valor del atributo montoTotOperacion."); } if (retencion.Totales.montoTotExent != 0) { return("SPT110 - El valor del atributo montoTotExent es diferente de 0.00."); } if (retencion.Totales.ImpRetenidos != null) { if (retencion.Totales.ImpRetenidos.Length > 0) { OperacionesCatalogos o = new OperacionesCatalogos(); decimal imp = 0.0M; foreach (var i in retencion.Totales.ImpRetenidos) { imp = imp + i.montoRet; if (i.ImpuestoSpecified == true) { if (i.Impuesto == RetencionesTotalesImpRetenidosImpuesto.Item01 || i.Impuesto == RetencionesTotalesImpRetenidosImpuesto.Item02) { if (retencion.Totales.ImpRetenidos.Length > 1) { return("SPT112 - Existe más de 1 nodo de ImpRetenidos para cada tipo de impuesto ISR (01) o para IVA (02)."); } } } if (i.BaseRetSpecified == true) { if (i.BaseRet == retencion.Totales.montoTotOperacion) { return("SPT113 - El valor del atributo BaseRet es diferente al valor del atributo montoTotOperacion o es diferente del valor contenido en uno de los rangos establecidos en los catálogos \"c_RangoSemRet \" o \" c_RangoMenRet \"."); } } if (i.ImpuestoSpecified == true && i.BaseRetSpecified == true) { double montoRet = o.Consultar_rangoMensualSemanal(s.Periodicidad, i.BaseRet, i.Impuesto.ToString()); if (i.montoRet != (i.BaseRet * (decimal)montoRet)) { return("SPT114 - El valor del atributo montoRet se encuentra fuera del rango establecido de acuerdo a la clave del atributo “Periodicidad”, registrada en el complemento o no corresponde con el factor aplicable del catálogo correspondiente."); } } } if (retencion.Totales.montoTotRet != imp) { return("SPT111 - El valor del atributo montoTotRet es diferente de la suma de los atributos montoRet del nodo ImpRetenidos."); } } } //-------------------------------------------------------- ServicioLocal.Business.c_Periodicidad myTipoPeriodicidad; Enum.TryParse <ServicioLocal.Business.c_Periodicidad>(s.Periodicidad, out myTipoPeriodicidad); if (myTipoPeriodicidad.ToString() != s.Periodicidad) { return("SPT115 - El atributo Periodicidad tiene un valor no permitido."); } if (Convert.ToInt32(s.NumServ) != s.Servicios.Length) { return("SPT116 - El NumServ registrado es diferente de la suma de los elementos hijo del nodo “Servicios”."); } decimal precioSinIVA = 0; decimal ImpuestosTrasladadosdelServicio = 0; foreach (var i in s.Servicios) { precioSinIVA = precioSinIVA + i.PrecioServSinIVA; if (i.ImpuestosTrasladadosdelServicio != null) { ImpuestosTrasladadosdelServicio = ImpuestosTrasladadosdelServicio + i.ImpuestosTrasladadosdelServicio.Importe; } } if (s.MonTotServSIVA != precioSinIVA) { return("SPT117 - El valor del atributo MonTotServSIVA es diferente de la suma de los atributos “PrecioServSinIVA” registrados en los nodos hijos “DetallesDelServicio”."); } if (s.TotalIVATrasladado != ImpuestosTrasladadosdelServicio) { return("SPT118 - El valor del atributo TotalIVATrasladado es diferente de la suma de los atributos “Importe” del nodo “ImpuestosTrasladadosdelServicio”."); } decimal tiVA = 0; OperacionesCatalogos o2 = new OperacionesCatalogos(); double MonTotServSIVA = o2.Consultar_rangoMensualSemanal(s.Periodicidad, s.MonTotServSIVA, "02"); tiVA = s.MonTotServSIVA * (decimal)MonTotServSIVA; if (s.TotalIVARetenido != tiVA) { return("SPT119 - El valor del atributo TotalIVARetenido es diferente el producto obtenido al multiplicar el valor del atributo “MonTotServSIVA” por la tasa de retención de IVA del catálogo “c_RangoMenRet” o “c_RangoSemRet” según corresponda."); } decimal tISR = 0; OperacionesCatalogos o3 = new OperacionesCatalogos(); double MonTotServSIVA2 = o3.Consultar_rangoMensualSemanal(s.Periodicidad, s.MonTotServSIVA, "01"); tISR = s.MonTotServSIVA * (decimal)MonTotServSIVA2; if (s.TotalISRRetenido != tISR) { return("SPT120 - El valor del atributo TotalISRRetenido es diferente del producto obtenido al multiplicar el valor del atributo “MonTotServSIVA” por la tasa de retención de ISR del catálogo “c_RangoMenRet” o “c_RangoSemRet” según corresponda de acuerdo al rango en el que se encuentre el valor del atributo “MonTotServSIVA”."); } if (s.DifIVAEntregadoPrestServ != (s.TotalIVATrasladado - s.TotalIVARetenido)) { return("SPT121 - El valor del atributo DifIVAEntregadoPrestServ es distinto del producto obtenido de la diferencia entre el valor del atributo “TotalIVATrasladado” y el valor de atributo “TotaldeIVARetenido”."); } decimal ComisionDelServicio = 0; decimal contribucion = 0; foreach (var i in s.Servicios) { ComisionDelServicio = ComisionDelServicio + i.ComisionDelServicio.Importe; if (i.ContribucionGubernamental != null) { if (s.MonTotalContribucionGubernamentalSpecified == false) { return("SPT123 - Se debe registrar el MonTotalContribucionGubernamental siempre que exista el nodo “ContribucionGubernamental” o su valor es diferente al resultado de la suma del atributo “ImpContrib” de los nodos hijos “ContribucionGubernamental” del nodo hijo “DetallesDelServicio”."); } contribucion = contribucion + i.ContribucionGubernamental.ImpContrib; } } if (s.MonTotalporUsoPlataforma != ComisionDelServicio) { return("SPT122 - El valor del atributo MonTotalporUsoPlataforma es diferente la suma de los atributos “Importe” de los nodos “ComisiondelServicio”."); } if (s.MonTotalContribucionGubernamental != contribucion) { return("SPT123 - Se debe registrar el MonTotalContribucionGubernamental siempre que exista el nodo “ContribucionGubernamental” o su valor es diferente al resultado de la suma del atributo “ImpContrib” de los nodos hijos “ContribucionGubernamental” del nodo hijo “DetallesDelServicio”."); } foreach (var i in s.Servicios) { ServicioLocal.Business.c_FormaPagoServ myTipoFormaPago; Enum.TryParse <ServicioLocal.Business.c_FormaPagoServ>(i.FormaPagoServ, out myTipoFormaPago); if (myTipoFormaPago.ToString() != i.FormaPagoServ) { return("SPT124 - La clave registrada en el atributo FormaPagoServ es diferente a las contenidas en el catálogo c_FormaPagoServ."); } ServicioLocal.Business.c_TipoDeServ myTipoServicio; Enum.TryParse <ServicioLocal.Business.c_TipoDeServ>(i.TipoDeServ, out myTipoServicio); if (myTipoServicio.ToString() != i.TipoDeServ) { return("SPT125 - El atributo TipoDeServ tiene una clave diferente a las establecidas en el catálogo c_TipoDeServ."); } if (i.SubTipServSpecified == true) { ServicioLocal.Business.c_SubTipoServ myTipoSubtipo; Enum.TryParse <ServicioLocal.Business.c_SubTipoServ>(i.SubTipServ, out myTipoSubtipo); if (myTipoSubtipo.ToString() != i.SubTipServ) { return("SPT126 - El valor del atributo SubTipServ es diferente a la relación del catálogo “c_SubTipoServ” con el tipo de servicio."); } } Operaciones_IRFC r2 = new Operaciones_IRFC(); vI_RFC t2 = r2.Consultar_IRFC(i.RFCTerceroAutorizado); if (t2 == null) { return("SPT127 - El valor capturado en el atributo RFCTerceroAutorizado es inválido según la lista de RFC inscritos no cancelados en el SAT (l_RFC)."); } if (i.FechaServ.Month != retencion.Periodo.MesIni) { return("SPT128 - El valor del atributo MesIni es diferente al valor registrado en el atributo FechaServ del CFDI de Retenciones o mayor al mes en curso."); } if (i.ImpuestosTrasladadosdelServicio.Base != i.PrecioServSinIVA) { return("SPT129 - El valor del atributo Base del nodo “ImpuestosTrasladadosdelServicio” es diferente al valor del atributo “PrecioServSinIVA”."); } if ((i.ImpuestosTrasladadosdelServicio.TasaCuota * i.ImpuestosTrasladadosdelServicio.Base) != i.ImpuestosTrasladadosdelServicio.Importe) { return("SPT130 - El valor del atributo Importe, del nodo “ImpuestosTrasladadosdelServicio es diferente del producto obtenido al multiplicar el valor del atributo “Base” por el valor del atributo “TasaCuota” del nodo hijo “ImpuestosTrasladadosdelServicio”."); } ServicioLocal.Business.c_EntidadesFederativas myTipoEntidad; Enum.TryParse <ServicioLocal.Business.c_EntidadesFederativas>(i.ContribucionGubernamental.EntidadDondePagaLaContribucion, out myTipoEntidad); if (myTipoEntidad.ToString() != i.ContribucionGubernamental.EntidadDondePagaLaContribucion) { return("SPT131 - El valor del atributo EntidadDondePagaLaContribucion es diferente de la clave del catálogo c_EntidadesFederativas."); } if (i.ComisionDelServicio.Importe <= 0) { return("SPT132 - El valor del atributo Importe del nodo “ComisiondelServicio” es igual a cero."); } } return("0"); } catch (Exception ex) { return("SPT999 - Error no clasificado"); } }