def retencion(b, c, tc, imp): return pyxb.BIND( Base=b, TipoFactor='Tasa', Impuesto=c, TasaOCuota=tc, Importe=imp)
def format_wrt(self, output_file, dat): self.logger.debug('dumping contents of dat: {}'.format(repr(dat))) def save(xo): tmp_dir = tempfile.gettempdir() f = os.path.join(tmp_dir, HelperStr.random_str()) writedom_cfdi(xo.toDOM(), self.__MAKEUP_PROPOS, f) return f c = Comprobante() c.Version = '3.3' c.Serie = dat['CONTROL']['SERIE'] # optional c.Folio = dat['CONTROL']['FOLIO'] # optional c.Fecha = dat['TIME_STAMP'] c.Sello = '__DIGITAL_SIGN_HERE__' c.FormaPago = "01" # optional c.NoCertificado = dat['NUMERO_CERTIFICADO'] c.Certificado = dat['CERT_B64'] c.SubTotal = dat['TOTALES']['IMPORTE_SUM'] c.Total = dat['TOTALES']['MONTO_TOTAL'] if dat['MONEDA']['ISO_4217'] == 'MXN': c.TipoCambio = 1 else: # optional (requerido en ciertos casos) c.TipoCambio = truncate(dat['MONEDA']['TIPO_DE_CAMBIO'], self.__NDECIMALS) c.Moneda = dat['MONEDA']['ISO_4217'] c.TipoDeComprobante = 'I' c.MetodoPago = "PUE" # optional and hardcode until ui can suply such value c.LugarExpedicion = dat['LUGAR_EXPEDICION'] c.Emisor = pyxb.BIND() c.Emisor.Nombre = dat['EMISOR']['RAZON_SOCIAL'] # optional c.Emisor.Rfc = dat['EMISOR']['RFC'] c.Emisor.RegimenFiscal = dat['EMISOR']['REGIMEN_FISCAL'] c.Receptor = pyxb.BIND() c.Receptor.Nombre = dat['RECEPTOR']['RAZON_SOCIAL'] # optional c.Receptor.Rfc = dat['RECEPTOR']['RFC'] c.Receptor.UsoCFDI = dat['RECEPTOR']['USO_CFDI'] c.Conceptos = pyxb.BIND() for i in dat['CONCEPTOS']: c.Conceptos.append(pyxb.BIND( Cantidad=i['CANTIDAD'], ClaveUnidad=i['UNIDAD'], ClaveProdServ=i['PRODSERV'], Descripcion=i['DESCRIPCION'], ValorUnitario=i['PRECIO_UNITARIO'], NoIdentificacion=i['SKU'], # optional Importe=truncate(i['IMPORTE'], self.__NDECIMALS), Impuestos=self.__tag_impuestos(i) )) def traslado(c, tc, imp): return pyxb.BIND(TipoFactor='Tasa', Impuesto=c, TasaOCuota=tc, Importe=imp) def zigma(v): z = 0 for w in v: z += w['importe'] return z c.Impuestos = pyxb.BIND( TotalImpuestosRetenidos=0, TotalImpuestosTrasladados=zigma(dat['TRASLADOS']), Traslados=pyxb.BIND( *tuple([traslado(t['clave'], self.__place_tasa(t['tasa']), t['importe']) for t in dat['TRASLADOS']]) ) ) tmp_file = save(c) with open(output_file, 'w') as a: a.write(sign_cfdi(dat['KEY_PRIVATE'], dat['XSLT_SCRIPT'], tmp_file)) os.remove(tmp_file)
def traslado(c, tc, imp): return pyxb.BIND(TipoFactor='Tasa', Impuesto=c, TasaOCuota=tc, Importe=imp)
def do_disable(self, args): try: doParser = self.arg_disable() doArgs = doParser.parse_args(shlex.split(args)) org = org_utils.org_get(self.api, doArgs.org) if org is None: printer.out( "There is no organization matching [" + doArgs.org + "].", printer.OK) return 0 printer.out("Getting target platform list for [" + org.name + "] . . .") allTargetPlatforms = self.api.Orgs( org.dbId).Targetplatforms.Getall() allTargetPlatforms = allTargetPlatforms.targetPlatforms.targetPlatform if len(allTargetPlatforms) == 0: printer.out( "There is no target platforms in [" + org.name + "].", printer.WARNING) return 0 all_targetplatforms = targetPlatforms() all_targetplatforms.targetPlatforms = pyxb.BIND() allTargetPlatforms = compare(allTargetPlatforms, doArgs.targetPlatforms, "name") if len(allTargetPlatforms) == 0: listName = "" for tpname in doArgs.targetPlatforms: listName = listName + tpname + " " printer.out( "There is no target platforms matching [" + listName + "].", printer.ERROR) return 2 for item in allTargetPlatforms: targetPlatformToDisable = targetPlatform() targetPlatformToDisable = item targetPlatformToDisable.active = False targetPlatformToDisable.access = False printer.out("Disabling [" + item.name + "].") all_targetplatforms.targetPlatforms.append( targetPlatformToDisable) result = self.api.Orgs(org.dbId).Targetplatforms.Updateaccess( body=all_targetplatforms) if result is None or len( result.targetPlatforms.targetPlatform) == 0: printer.out( "The target platforms(s) selected are already disabled", printer.WARNING) return 0 sentenceReturn = "Target Platform(s)" for tp in result.targetPlatforms.targetPlatform: sentenceReturn = sentenceReturn + " " + tp.name + " " printer.out(sentenceReturn + "has/have been disabled.", printer.OK) return 0 except ArgumentParserError as e: printer.out("In Arguments: " + str(e), printer.ERROR) self.help_disable() except Exception as e: return handle_uforge_exception(e)
def append_instance_to_deployment(deployment, my_instance): deployment.instances = pyxb.BIND() deployment.instances._ExpandedName = pyxb.namespace.ExpandedName( Namespace, 'Instances') deployment.instances.append(my_instance)
from __future__ import print_function import pyxb import po4 import address import pyxb.binding.datatypes as xs po = po4.purchaseOrder(orderDate=xs.date(1999, 10, 20)) po.shipTo = address.USAddress('Alice Smith', '123 Maple Street', 'Anytown', 'AK', 12341) po.billTo = address.USAddress('Robert Smith', '8 Oak Avenue', 'Anytown', 'AK', 12341) po.items = pyxb.BIND(pyxb.BIND('Lapis necklace', 1, 99.95, partNum='833-AA'), pyxb.BIND('Plastic necklace', 4, 3.95, partNum='833-AB')) print(po.toxml("utf-8").decode('utf-8'))
def format_wrt(self, output_file, dat): self.logger.debug('dumping contents of dat: {}'.format(repr(dat))) def save(xo): tmp_dir = tempfile.gettempdir() f = os.path.join(tmp_dir, HelperStr.random_str()) writedom_cfdi(xo.toDOM(), self.__MAKEUP_PROPOS, f) return f c = Comprobante() c.Version = '3.3' c.Serie = dat['CONTROL']['SERIE'] # optional c.Folio = dat['CONTROL']['FOLIO'] # optional c.Fecha = dat['TIME_STAMP'] c.Sello = '__DIGITAL_SIGN_HERE__' c.FormaPago = dat["FORMA_PAGO"]['CLAVE'] # optional c.NoCertificado = dat['NUMERO_CERTIFICADO'] c.Certificado = dat['CERT_B64'] c.SubTotal = dat['TOTALES']['IMPORTE_SUM'] c.Descuento = dat['TOTALES'][ 'DESCTO_SUM'] if dat['TOTALES']['DESCTO_SUM'] > 0 else None c.Total = dat['TOTALES']['MONTO_TOTAL'] if dat['MONEDA']['ISO_4217'] == 'MXN': c.TipoCambio = 1 else: # optional (requerido en ciertos casos) c.TipoCambio = truncate(dat['MONEDA']['TIPO_DE_CAMBIO'], self.__NDECIMALS) c.Moneda = dat['MONEDA']['ISO_4217'] c.TipoDeComprobante = 'I' c.MetodoPago = dat['METODO_PAGO'] # optional c.LugarExpedicion = dat['LUGAR_EXPEDICION'] c.Emisor = pyxb.BIND() c.Emisor.Nombre = dat['EMISOR']['RAZON_SOCIAL'] # optional c.Emisor.Rfc = dat['EMISOR']['RFC'] c.Emisor.RegimenFiscal = dat['EMISOR']['REGIMEN_FISCAL'] c.Receptor = pyxb.BIND() c.Receptor.Nombre = dat['RECEPTOR']['RAZON_SOCIAL'] # optional c.Receptor.Rfc = dat['RECEPTOR']['RFC'] c.Receptor.UsoCFDI = dat['RECEPTOR']['USO_CFDI'] c.Conceptos = pyxb.BIND() for i in dat['CONCEPTOS']: c.Conceptos.append( pyxb.BIND( Cantidad=i['CANTIDAD'], ClaveUnidad=i['UNIDAD'], ClaveProdServ=i['PRODSERV'], Descripcion=i['DESCRIPCION'], ValorUnitario=i['PRECIO_UNITARIO'], NoIdentificacion=i['SKU'], # optional Importe=truncate(i['IMPORTE'], self.__NDECIMALS), Descuento=i['DESCTO'] if i['DESCTO'] > 0 else None, Impuestos=self.__tag_impuestos(i) if i['TASA_IMPUESTO'] > 0 else None)) def traslado(c, tc, imp): return pyxb.BIND(TipoFactor='Tasa', Impuesto=c, TasaOCuota=tc, Importe=imp) def zigma(v): z = Decimal(0) for w in v: z += self.__narf(w['importe']) return float(z) c.Impuestos = pyxb.BIND( TotalImpuestosRetenidos=0, TotalImpuestosTrasladados=zigma(dat['TRASLADOS']), Traslados=pyxb.BIND(*tuple([ traslado(t['clave'], self.__place_tasa(t['tasa']), t['importe']) for t in dat['TRASLADOS'] ]))) tmp_file = save(c) HelperStr.edit_pattern('TipoCambio="1.0"', 'TipoCambio="1"', tmp_file) # XXX: Horrible workaround HelperStr.edit_pattern( '(Descuento=)"([0-9]*(\.[0-9]{0,1})?)"', lambda x: 'Descuento="%.2f"' % (float(x.group(2)), ), tmp_file) HelperStr.edit_pattern( '(Importe=)"([0-9]*(\.[0-9]{0,1})?)"', lambda x: 'Importe="%.2f"' % (float(x.group(2)), ), tmp_file) with open(output_file, 'w', encoding="utf-8") as a: a.write(sign_cfdi(dat['KEY_PRIVATE'], dat['XSLT_SCRIPT'], tmp_file)) os.remove(tmp_file)
def mdk_builder(target, source, env): prj = mdk_xml_schema.Project() prj.ToolsetName = 'ARM' prj.Device = 'ARMCM0' prj.useUlib = 1 # target_path = target[0].path[0: target[0].path.rfind("\\")+1] # target_name = target[0].path[target[0].path.rfind("\\")+1: len(target[0].path)] prj_dir = os.path.join(env['PROJ_DIR'].srcnode().abspath, 'mdk') if os.path.exists(prj_dir) == False: os.mkdir(prj_dir) jlink_script_src_dir = os.path.join( env.Dir('.').abspath, 'tools\\prog\\LinkedSemi\\LE501X.jlinkscript') jlink_script_dst_dir = os.path.join(prj_dir, 'JLinkSettings.jlinkscript') # print(jlink_script_src_dir) # print(jlink_script_dst_dir) try: shutil.copy(jlink_script_src_dir, jlink_script_dst_dir) except IOError as e: print("Unable to copy jlink script file") except: print("Unexpected error:", sys.exc_info()) inc_path_str = "" for node_path in env.Dir(env['CPPPATH']): inc_path_str = inc_path_str + os.path.relpath(node_path.abspath, prj_dir) + ";" prj.IncludePath = inc_path_str scat_file_str = os.path.relpath((env['LINKSCRIPT']).srcnode().abspath, prj_dir) prj.ScatterFile = scat_file_str prj.CDefines = "" prj.COptions = "--c99 -O2 --wchar32" prj.LinkOptions = "--datacompressor=off" beforecompile1 = mdk_xml_schema.UserAction('') beforecompile2 = mdk_xml_schema.UserAction('') beforebuild1 = mdk_xml_schema.UserAction('') beforebuild2 = mdk_xml_schema.UserAction('') afterbuild1 = mdk_xml_schema.UserAction( os.path.relpath(env.Dir("#").abspath, prj_dir) + '\\tools\\le501x\\after_build.bat @L ' + os.path.relpath(env.Dir("#").abspath, prj_dir) + ' ' + env['STACK_HEX_PATH']) afterbuild2 = mdk_xml_schema.UserAction('') prj.User = pyxb.BIND(BeforeCompile1=beforecompile1, BeforeCompile2=beforecompile2, BeforeBuild1=beforebuild1, BeforeBuild2=beforebuild2, AfterBuild1=afterbuild1, AfterBuild2=afterbuild2) #c_list = [] #asm_list = [] obj_list = [] lib_list = [] all_file_list = [] for build_src in source: src = build_src.srcnode().path filepath, extension = os.path.splitext(src) all_file_list.append(os.path.relpath(src, prj_dir)) #if extension == '.c': # c_list.append(os.path.relpath(src,prj_dir)) #elif extension == '.s' or extension == 'S': # asm_list.append(os.path.relpath(src,prj_dir)) #else: if extension != '.c' and extension != '.C' and extension != '.s' and extension != '.S': obj_list.append(os.path.relpath(src, prj_dir)) if 'LIBS' in env: for lib in env['LIBS']: libpath, libext = os.path.splitext(lib.path) all_file_list.append(os.path.relpath(lib.path, prj_dir)) if libext == '.o': obj_list.append(os.path.relpath(lib.path, prj_dir)) else: lib_list.append(os.path.relpath(lib.path, prj_dir)) #file_list = file_list_build(c_list,1) + file_list_build(asm_list,2) + file_list_build(obj_list,3) + file_list_build(lib_list,4) group_name_list = [] group_file_list = [] group_build_file_list = [] app_file_list = [] for file_x in all_file_list: count = file_x.count("..\\") if count == 1: app_file_list.append(file_x) else: group_name = file_x.replace("..\\", "").split('\\')[0] group_name = group_name.split('.')[0] if group_name in group_name_list: index = group_name_list.index(group_name) group_file_list[index].append(file_x) else: group_name_list.append(group_name) temp_file_list = [] temp_file_list.append(file_x) group_file_list.append(temp_file_list) group_list = [] for group_name in group_name_list: index = group_name_list.index(group_name) group_build_file_list.append( new_file_list_build(group_file_list[index])) group_list.append( pyxb.BIND(group_name, pyxb.BIND(*group_build_file_list[index]))) group_list.append( pyxb.BIND("app", pyxb.BIND(*new_file_list_build(app_file_list)))) prj.Groups = pyxb.BIND(*group_list) filename = target[0].abspath + '.xml' with open(filename, 'wb') as file_obj: file_obj.write(prj.toxml("utf-8")) #print(os.path.isfile(os.path.join(prj_dir,os.path.basename(target[0].path)+'.uvprojx'))) if os.path.isfile( os.path.join(prj_dir, os.path.basename(target[0].path) + '.uvprojx')) == True: os.remove( os.path.join(prj_dir, os.path.basename(target[0].path) + '.uvprojx')) if os.path.isfile( os.path.join(prj_dir, os.path.basename(target[0].path) + '.uvoptx')) == True: os.remove( os.path.join(prj_dir, os.path.basename(target[0].path) + '.uvoptx')) proj_path = os.path.join(prj_dir, os.path.basename(target[0].path) + '.uvprojx') proj_gen = env['UV'] + ' ' + proj_path + ' -i ' + filename proj_build = env['UV'] + ' -b ' + proj_path complete = subprocess.run(proj_gen, shell=True) return complete.returncode
def retencion(c, imp): return pyxb.BIND(Impuesto=c, Importe=imp)
def format_wrt(self, output_file, dat): self.logger.debug('dumping contents of dat: {}'.format(repr(dat))) def save(xo): tmp_dir = tempfile.gettempdir() f = os.path.join(tmp_dir, HelperStr.random_str()) writedom_cfdi(xo.toDOM(), self.__MAKEUP_PROPOS, f) return f def wa(tf): """ The sundry work arounds to apply """ def two_dec_attr(attr): HelperStr.edit_pattern( '(' + attr + '=)"([0-9]*(\.[0-9]{0,1})?)"', lambda x: attr + '="%.2f"' % (float(x.group(2)),), tf ) HelperStr.edit_pattern('ValorUnitario="0.0"', 'ValorUnitario="0"', tf) HelperStr.edit_pattern('Importe="0(\.0{1})"', 'Importe="0"', tf) HelperStr.edit_pattern('Cantidad="1.0"', 'Cantidad="1"', tf) HelperStr.edit_pattern('TipoCambio="1.0"', 'TipoCambio="1"', tf) HelperStr.edit_pattern('Total="0.0"', 'Total="0"', tf) HelperStr.edit_pattern('SubTotal="0.0"', 'SubTotal="0"', tf) for a in ['Monto', 'ImpSaldoInsoluto', 'ImpPagado', 'ImpSaldoAnt']: two_dec_attr(a) def wrap_up(tf, of): with open(of, 'w', encoding="utf-8") as a: a.write( sign_cfdi( dat['KEY_PRIVATE'], dat['XSLT_SCRIPT'], tf ) ) os.remove(tf) def paste_tag_pagos(tf, elements): import xml.dom.minidom doc = xml.dom.minidom.Document() base_ns = "http://www.sat.gob.mx/Pagos" pagos = doc.createElementNS(base_ns, 'pago10:Pagos') pagos.setAttribute("xmlns:pago10", base_ns) pagos.setAttribute("xsi:schemaLocation", "http://www.sat.gob.mx/Pagos http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd") pagos.setAttribute("Version","1.0") for d in elements: payment = doc.createElement('pago10:Pago') payment.setAttribute('NumOperacion', d['NUMERO_OPERACION']) payment.setAttribute('Monto', d['MONTO']) payment.setAttribute('MonedaP', d['ISO_4217']) payment.setAttribute('FormaDePagoP', d['CLAVE']) payment.setAttribute('FechaPago', d['TIME_STAMP']) dr = doc.createElement('pago10:DoctoRelacionado') dr.setAttribute('IdDocumento', d['UUID_DOC']) dr.setAttribute('ImpSaldoInsoluto', d['IMP_SALDO_INSOLUTO']) dr.setAttribute('ImpSaldoAnt', d['IMP_SALDO_ANT']) dr.setAttribute('ImpPagado', d['IMP_PAGADO']) dr.setAttribute('MonedaDR', d['MONEDA_DR']) dr.setAttribute('NumParcialidad', '1') dr.setAttribute('MetodoDePagoDR', 'PPD') payment.appendChild(dr) pagos.appendChild(payment) doc.appendChild(pagos) content_xml = output = doc.toprettyxml() chunk = "{}\n{}\n{}\n{}".format('<cfdi:Complemento>', content_xml[22:], # omits xml declaration '</cfdi:Complemento>', '</cfdi:Comprobante>') HelperStr.edit_pattern('</cfdi:Comprobante>', chunk, tf) c = Comprobante() c.Version = '3.3' c.Fecha = dat['TIME_STAMP'] c.Sello = '__DIGITAL_SIGN_HERE__' c.Receptor = pyxb.BIND() c.Receptor.Nombre = dat['RECEPTOR']['RAZON_SOCIAL'] # optional c.Receptor.Rfc = dat['RECEPTOR']['RFC'] c.Receptor.UsoCFDI = dat['RECEPTOR']['USO_CFDI'] c.Emisor = pyxb.BIND() c.Emisor.Nombre = dat['EMISOR']['RAZON_SOCIAL'] # optional c.Emisor.Rfc = dat['EMISOR']['RFC'] c.Emisor.RegimenFiscal = dat['EMISOR']['REGIMEN_FISCAL'] c.LugarExpedicion = dat['LUGAR_EXPEDICION'] c.Serie = dat['CONTROL']['SERIE'] # optional c.Folio = dat['CONTROL']['FOLIO'] # optional c.NoCertificado = dat['NUMERO_CERTIFICADO'] c.Certificado = dat['CERT_B64'] c.TipoDeComprobante = 'P' c.Total = '0' c.SubTotal = '0' c.Moneda = dat['MONEDA']['ISO_4217'] c.Conceptos = pyxb.BIND() for i in dat['CONCEPTOS']: c.Conceptos.append(pyxb.BIND( Cantidad=i['CANTIDAD'], ClaveUnidad=i['UNIDAD'], ClaveProdServ=i['PRODSERV'], Descripcion=i['DESCRIPCION'], ValorUnitario=i['PRECIO_UNITARIO'], Importe=i['IMPORTE'] )) tmp_file = save(c) paste_tag_pagos(tmp_file, dat['COMPLEMENTO_PAGOS']) wa(tmp_file) wrap_up(tmp_file, output_file)