11import http .client
22import json
33
4- from .webservice import WebService
5- from .electronicbilling import ElectronicBilling
4+ from .web_service import WebService
5+ from .electronic_billing import ElectronicBilling
6+ from .register_inscription_proof import RegisterInscriptionProof
7+ from .register_scope_ten import RegisterScopeTen
8+ from .register_scope_thirteen import RegisterScopeThirteen
69
710class Afip :
8- sdk_version_number = '1.0.0'
9-
10- def __init__ (self , options : dict ):
11- if not (options .get ("CUIT" )):
12- raise Exception ("CUIT field is required in options" )
13-
14- self .CUIT : int = options .get ("CUIT" )
15- self .production : bool = options .get ("production" ) if options .get ("production" ) == True else False
16- self .environment : str = "prod" if self .production == True else "dev"
17- self .cert : str = options .get ("cert" )
18- self .key : str = options .get ("key" )
19- self .access_token : str = options .get ("access_token" )
11+ sdk_version_number = '1.0.0'
12+
13+ def __init__ (self , options : dict ):
14+ if not (options .get ("CUIT" )):
15+ raise Exception ("CUIT field is required in options" )
16+
17+ self .CUIT : int = options .get ("CUIT" )
18+ self .production : bool = options .get ("production" ) if options .get ("production" ) == True else False
19+ self .environment : str = "prod" if self .production == True else "dev"
20+ self .cert : str = options .get ("cert" )
21+ self .key : str = options .get ("key" )
22+ self .access_token : str = options .get ("access_token" )
23+
24+ self .ElectronicBilling = ElectronicBilling (self )
25+ self .RegisterInscriptionProof = RegisterInscriptionProof (self )
26+ self .RegisterScopeTen = RegisterScopeTen (self )
27+ self .RegisterScopeThirteen = RegisterScopeThirteen (self )
28+
29+
30+ # Gets token authorization for an AFIP Web Service
31+ #
32+ # If force is true it forces to create a new TA
33+ def getServiceTA (self , service : str , force : bool = False ) -> dict :
34+ conn = http .client .HTTPSConnection ("app.afipsdk.com" )
35+
36+ payload = {
37+ "environment" : self .environment ,
38+ "tax_id" : self .CUIT ,
39+ "wsid" : service ,
40+ "force_create" : force
41+ }
42+
43+ if self .cert : payload ["cert" ] = self .cert
44+ if self .key : payload ["key" ] = self .key
45+
46+ headers = {
47+ "Content-Type" : "application/json" ,
48+ "sdk-version-number" : self .sdk_version_number ,
49+ "sdk-library" : "python" ,
50+ "sdk-environment" : self .environment
51+ }
52+
53+ if self .access_token : headers ["Authorization" ] = "Bearer %s" % self .access_token
54+
55+ conn .request ("POST" , "/api/v1/afip/auth" , json .dumps (payload ), headers )
56+
57+ res = conn .getresponse ()
2058
21- self . ElectronicBilling = ElectronicBilling ( self )
59+ data = res . read ( )
2260
61+ if res .getcode () >= 400 :
62+ raise Exception (data .decode ("utf-8" ))
2363
24- # Gets token authorization for an AFIP Web Service
25- #
26- # If force is true it forces to create a new TA
27- def getServiceTA (self , service : str , force : bool = False ) -> dict :
28- conn = http .client .HTTPSConnection ("app.afipsdk.com" )
64+ return json . loads ( data . decode ( "utf-8" ))
65+
66+ # Get last request and last response XML
67+ def getLastRequestXML (self ) -> dict :
68+ conn = http .client .HTTPSConnection ("app.afipsdk.com" )
2969
30- payload = {
31- "environment " : self . environment ,
32- "tax_id " : self .CUIT ,
33- "wsid " : service ,
34- "force_create " : force
35- }
70+ headers = {
71+ "Content-Type " : "application/json" ,
72+ "sdk-version-number " : self .sdk_version_number ,
73+ "sdk-library " : "python" ,
74+ "sdk-environment " : self . environment
75+ }
3676
37- if self .cert : payload ["cert" ] = self .cert
38- if self .key : payload ["key" ] = self .key
77+ if self .access_token : headers ["Authorization" ] = "Bearer %s" % self .access_token
3978
40- headers = {
41- "Content-Type" : "application/json" ,
42- "sdk-version-number" : self .sdk_version_number ,
43- "sdk-library" : "python" ,
44- "sdk-environment" : self .environment
45- }
79+ conn .request ("GET" , "/api/v1/afip/requests/last-xml" , None , headers )
4680
47- if self .access_token : headers ["Authorization" ] = "Bearer %s" % self .access_token
48-
49- conn .request ("POST" , "/api/v1/afip/auth" , json .dumps (payload ), headers )
50-
51- res = conn .getresponse ()
52-
53- data = res .read ()
54-
55- if res .getcode () >= 400 :
56- raise Exception (data .decode ("utf-8" ))
57-
58- return json .loads (data .decode ("utf-8" ))
81+ res = conn .getresponse ()
5982
60- # Get last request and last response XML
61- def getLastRequestXML (self ) -> dict :
62- conn = http .client .HTTPSConnection ("app.afipsdk.com" )
63-
64- headers = {
65- "Content-Type" : "application/json" ,
66- "sdk-version-number" : self .sdk_version_number ,
67- "sdk-library" : "python" ,
68- "sdk-environment" : self .environment
69- }
83+ data = res .read ()
7084
71- if self .access_token : headers ["Authorization" ] = "Bearer %s" % self .access_token
85+ if res .getcode () >= 400 :
86+ raise Exception (data .decode ("utf-8" ))
7287
73- conn .request ("GET" , "/api/v1/afip/requests/last-xml" , None , headers )
74-
75- res = conn .getresponse ()
76-
77- data = res .read ()
78-
79- if res .getcode () >= 400 :
80- raise Exception (data .decode ("utf-8" ))
81-
82- return json .loads (data .decode ("utf-8" ))
83-
88+ return json .loads (data .decode ("utf-8" ))
89+
8490
85- # Create generic Web Service
86- def webService (self , service , options : dict = {}) -> WebService :
87- options ['service' ] = service
88- options ['generic' ] = True
91+ # Create generic Web Service
92+ def webService (self , service , options : dict = {}) -> WebService :
93+ options ['service' ] = service
94+ options ['generic' ] = True
8995
90- return WebService (self , options )
96+ return WebService (self , options )
0 commit comments