import xmlrpc.client import xlsxwriter url = '' #crear variable sobre url erp db= '' #nombre de la base de datos username= '' #usuario password = '' # pas usuario common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url)) ## metallamado a odo uid = common.authenticate(db, username, password, {}) ## autenticador de la meta llamada models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url)) # segunda metallamada workbook = xlsxwriter.Workbook('query.xlsx') worksheet = workbook.add_worksheet() query = """ SELECT COALESCE(hb.name, 'No Warehouse') AS warehouse_name, COALESCE(prt.name, 'No Type') AS type_name, COALESCE(pt.name, 'No product') AS product, COALESCE(pol.name, 'No Name') AS line_name, COALESCE(rp.name, 'No Partner') AS partner_name, COALESCE(po.name, 'No Order') AS order_name, COALESCE(pol.price_unit, 0) AS price_unit, COALESCE(pol.product_qty, 0) AS product_qty, COALESCE(pr.ordering_date, '2000-01-01') AS ordering_date, COALESCE(pol.price_subtotal, 0) AS price_subtotal FROM purchase_requisition pr INNER JOIN purchase_requisition_type prt ON pr.type_id = prt.id INNER JOIN purchase_order po ON po.origin = pr.name INNER JOIN purchase_order_line pol ON pol.order_id = po.id LEFT JOIN account_move am ON po.name = am.invoice_origin LEFT JOIN account_move_line aml ON am.id = aml.move_id INNER JOIN product_product pp ON pol.product_id = pp.id INNER JOIN product_template pt ON pp.product_tmpl_id = pt.id LEFT JOIN res_partner rp ON po.partner_id = rp.id LEFT JOIN stock_warehouse sw ON pr.warehouse_id = sw.id INNER JOIN res_partner rpw ON sw.partner_id = rpw.id INNER JOIN hr_branch hb ON rpw.id = hb.partner_id WHERE pr.user_id in (274,901,13,1823) and pr.ordering_date >= '2024-01-01' and pr.ordering_date <= '2024-12-31' and am.state = 'posted' and am.invoice_type_code = '01' group by pol.name,po.name,hb.name,prt.name,pt.name,rp.name,pol.price_unit,pol.product_qty,pr.ordering_date,pol.price_subtotal order by pr.ordering_date; """ print("Query:", query) result = models.execute_kw(db, uid, password, 'res.company', 'query_dictfetchall', [1, query]) print(len(result)) column_headers = ['Destino','Categoria','product','Descripción','Proovedor','Factura','Costo','Cantidad','Fecha','Total'] for col_num, header in enumerate(column_headers): worksheet.write(0, col_num, header) # # for i, value in enumerate(result): for j, key in enumerate(value.keys()): worksheet.write(i+1, j, value[key]) # print(value[key]) workbook.close() print('Done!')