-
Notifications
You must be signed in to change notification settings - Fork 44
/
Facturacion.Tipos.pas
107 lines (93 loc) · 4.89 KB
/
Facturacion.Tipos.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
unit Facturacion.Tipos;
interface
uses
{$IF CompilerVersion >= 23}
System.SysUtils
{$ELSE}
SysUtils
{$IFEND};
type
{$IFDEF undef}{$REGION 'Documentation'}{$ENDIF}
/// <summary>
/// <para>
/// Excepcion heredable que tiene la propiedad Reintentable para saber si
/// dicha falla es temporal y el programa cliente debe de re-intentar la
/// última petición.
/// </para>
/// <para>
/// Si su valor es Falso es debido a que la falla está del lado del cliente
/// y el PAC no puede procesar dicha petición (XML incorrecto, Sello mal
/// generado, etc.)
/// </para>
/// </summary>
{$IFDEF undef}{$ENDREGION}{$ENDIF}
ECFDIException = class(Exception)
protected
fReintentable : Boolean;
public
constructor Create(const aMensaje: string; const aReintentable: Boolean);
property Reintentable : Boolean read fReintentable default false;
end;
{$IFDEF undef}{$REGION 'Excepciones de validacion de la matriz de validaciones de CFDI 3.3'}{$ENDIF}
ESATErrorGenericoException = class(ECFDIException)
private
fCodigoError: Integer;
public
constructor Create(const aMensajeExcepcion: String; const aCodigoError: Integer; const aReintentable: Boolean);
property CodigoError: Integer read fCodigoError;
end;
// Listado de excepciones lanzadas de acuerdo a la Matriz de Erroes publicada
// en el Anexo 20:
// http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/Anexo_20_version3.3.aspx
// NOTA: Solo se implementaron las excepciones más comunes
// si se desea se puede agregar el resto de las excepciones faltantes.
// Los errores técnicos, donde se omiten nodos, no coincide, etc. no se calculó bien, etc
// serán heredados de la siguiente excepcion. Estos errores deberán ser corregidos
// en la librería directamente
ESATErrorTecnicoXMLException = class(ESATErrorGenericoException);
// Error en el certificado, probablemente certificado caduco
ESATErrorEnCertificadoException = class(ESATErrorGenericoException);
// Los errores de "configuracion" donde algun dato del emisor está mal segun el SAT
ESATDatoEmisorIncorrectoException = class(ESATErrorGenericoException);
ESATDatoReceptorIncorrectoException = class(ESATErrorGenericoException);
// El porcentaje del impuesto tiene un valor fuera del catalogo de tasas c_TasaOCuota.json
ESAImpuestoTasaIncorrectaException = class(ESATErrorGenericoException);
// Cuando algun valor de un campo de catalogo no existió en el mismo
ESATValorNoEnCatalogoException = class(ESATErrorGenericoException);
// El uso de cfdi no es valido para el receptor
EUsoCFDIIncorrectoException = class(ESATErrorGenericoException);
// Existió un error arimético en el XML
ESATProblemaDeLlenadoException = class(ESATErrorGenericoException);
ESATCampoConfirmacionRequeridoException = class(ESATErrorGenericoException);
ESATNoIdentificadoException = class(ESATErrorGenericoException); // CFDI33196
ESATRFCNoPerteneceFronteraException = class(ESATErrorGenericoException); // CFDI33196
ESATCodigoPostalNoPerteneceFronteraException = class(ESATErrorGenericoException); // CFDI33196
ESATEstimuloFronteraNoAplicaAlProductoException = class(ESATErrorGenericoException); // CFDI33196
ESATDomicilioFiscalReceptorIncorrectoException = class(ESATErrorGenericoException); // CFDI40148
ESATNombreReceptorIncorrectoException = class(ESATErrorGenericoException); // CFDI40145
ESATRegimenFiscalReceptorNoCorrespondeException = class(ESATErrorGenericoException); // CFDI40158
ESATRegimenFiscalEmisorNoCorrespondeException = class(ESATErrorGenericoException); // CFDI40141
ESATUsoCFDIReceptorNoCorrespondeRegimen = class(ESATErrorGenericoException); // CFDI40161
ESATReceptorRFCNoExisteEnLCO = class(ESATErrorGenericoException); // CFDI40143
ESATNombreEmisorIncorrectoException = class(ESATErrorGenericoException); // CFDI40138
ESATImpuestoISRDebeExistirException = class(ESATErrorGenericoException); // CFDI140225
{$IFDEF undef}{$ENDREGION}{$ENDIF}
const
_RFC_VENTA_PUBLICO_EN_GENERAL = 'XAXX010101000';
_RFC_VENTA_EXTRANJEROS = 'XEXX010101000';
_NOMBRE_CONTRIBUYENTE_PUBLICO_GENERAL = 'PUBLICO EN GENERAL';
_NOMBRE_CONTRIBUYENTE_EXTRANJERO = 'VENTA AL EXTRANJERO';
_UUID_LONGITUD = 36;
implementation
constructor ESATErrorGenericoException.Create(const aMensajeExcepcion: String;
const aCodigoError: Integer; const aReintentable: Boolean);
begin
inherited Create(aMensajeExcepcion, aReintentable);
fCodigoError := aCodigoError;
end;
constructor ECFDIException.Create(const aMensaje: string; const aReintentable: Boolean);
begin
inherited Create(aMensaje);
fReintentable := aReintentable;
end;
end.