python3을 사용하여 Odoo 15용 Excel 보고서를 만드는 방법.

오두 ERP 보고



Odoo는 훌륭한 오픈 소스 ERP 소프트웨어입니다. 얼마나 많은 일을 할 수 있는지 보면 정말 놀라운 도구입니다.

그러나 보고 기능은 종종 이상적이지 않습니다. 그리고 사용자 정의 Odoo 보고서를 작성하는 데 몇 시간을 할애할 수 있지만(몇 달 안에 변경해야 함) Python으로 직접 작성하는 것이 훨씬 더 쉽다는 것을 알게 되었습니다!

모든 위치의 모든 제품에 대한 보고서를 생성하는 python3 스크립트를 작성하겠습니다.

나는 다음을 다룰 것이다. 끝에 내 코드가 있는 저장소를 찾을 수 있습니다.


로컬 Odoo 데이터 스크래핑 설정 방법


제품 및 위치 긁는 방법


주문형 Excel 보고서를 스핀업하는 방법

설정하기



Odoo에 로그인하려면 모든 일반 정보와 로컬에서 호스팅하는 경우 추가 정보가 필요합니다. 우리는 또한 팬더를 사용할 것입니다.

# !/usr/bin/env python3

import pandas as pd
import xmlrpc.client
import ssl

# Begin Login to Odoo#

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context

url = "http://localhost:8069"
db = "test"
username = "[email protected]"
password = "test"

models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})



제품 및 위치 데이터를 가져옵니다.



이제 데이터 스크래핑을 시작할 준비가 되었습니다! 이 경우 간단하게 유지하겠습니다. 추가 필터링 없이 모든 제품을 원합니다. 예를 들어 여기에 엑스트라를 추가할 수 있습니다. 사용자가 변형했거나 만든 모든 제품을 원합니다.

모든 제품 ID를 가지고 있으면 실제로 제품이 있는 모든 위치를 검색하고 싶습니다.

 ['on_hand', '=', True]]])


데이터 가져오기

all_products = models.execute_kw(db, uid, password, 'product.product', 'search',
                                 [[['type', '=', 'product']]])


on_hand_data = models.execute_kw(db, uid, password,
                                 'stock.quant', 'search_read',
                                 [[['product_id', '=', all_products], ['on_hand', '=', True]]])




함께 모아서



이제 데이터 스크래핑을 시작할 준비가 되었습니다! 이 경우 간단하게 유지하겠습니다. 추가 필터링 없이 모든 제품을 원합니다. 예를 들어 여기에 엑스트라를 추가할 수 있습니다. 사용자가 변형했거나 만든 모든 제품을 원합니다.

데이터를 사용할 준비가 되었습니다! 이제 뭐?

이제 우리는 각 제품에 대해 손에 든 모든 것에 대해 루프를 실행합니다. 힌트: 대부분의 보고서에서 이것이 요약되는 전부임을 발견했습니다. 루프 필터링

검색 읽기 방법을 사용하여 각 제품에 대한 모든 데이터를 가져옵니다.

search_read


우리는 3개의 목록을 만들고 pandas가 데이터 프레이밍을 처리하도록 할 것입니다.

product = []
locations = []
quantity = []

for i in on_hand_data:

    product.append(i['product_id'][1])
    quantity.append(i['quantity'])
    locations.append(i['location_id'][1])

df = pd.DataFrame()

df['Product'] = product
df['Locations'] = locations
df['quantity'] = quantity


 # Converting to excel
df.to_excel('data.xlsx', index=False)







그게 다야! 깔끔하고 심플한 레포트를 확인하세요!

좋은 웹페이지 즐겨찾기