Naliia_Dev/demo/company.py

99 lines
2.5 KiB
Python

import datetime as dt
from decimal import Decimal
from proteus import Model, Wizard
from tools import open_file
dir = "./demo/data"
file_ = "party_company.csv"
path = "".join([dir, "/", file_])
def setup(config, modules, company_config):
Identifier = Model.get('party.identifier')
Company = Model.get('company.company')
Country = Model.get('country.country')
Currency = Model.get('currency.currency')
Party = Model.get('party.party')
Subdivision = Model.get('country.subdivision')
company_currency, = Currency.find([
('code', '=', company_config["company_currency"])
])
rate = company_currency.rates.new()
rate.date = dt.date(dt.date.today().year, 1, 1)
rate.rate = Decimal('1')
company_currency.save()
try:
company_country, = Country.find(
[('code', '=', company_config["company_country"])])
except ValueError:
company_country = None
try:
company_subdivision, = Subdivision.find(
[('code', '=', company_config["company_subdivision"])]
)
except ValueError:
company_subdivision = None
try:
company_municipality, = Subdivision.find(
[('code', '=', company_config["company_municipality"])]
)
except ValueError:
company_municipality = None
CompanyWizard = Wizard('company.company.config')
CompanyWizard.execute('company')
company = CompanyWizard.form
party = Party(
name=company_config["company_name"],
type_person=company_config["type_person"]
)
identifier = Identifier()
identifier.type = company_config["company_identifier_type"]
identifier.code = company_config["company_identifier"]
party.identifiers.append(identifier)
address = party.addresses[0]
address.street = company_config["company_street"]
address.country = company_country
address.subdivision = company_subdivision
address.subdivision_municipality = company_municipality
party.addresses.append(address)
party.save()
company.party = party
company.currency = company_currency
company.timezone = company_config["company_timezone"]
CompanyWizard.execute('add')
# Reload context
User = Model.get('res.user')
config._context = User.get_preferences(True, {})
company, = Company.find()
return company
def get(company_config):
Company = Model.get('company.company')
if company := Company.find([
('party.name', '=', company_config["company_name"])
]):
return company
return