Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
3 Odpowiedzi
2285 Widoki

Hello, this is my first post in the forum :)

I'm trying to automate the analytic distribution in purchase order because, some orders may have tens of lines and I want to avoid errors while copying the distribution. Mass modification is not available for the lines in Studio so I try to make an atumated action with code :

Model id purchase.order, trigger is update and I have a ManyToOne field related to analytic accounts called x_studio_compte_analytique. Here is my code.
I tried to check if record.x_studio_compte_analytique.id is ok => yes, it displays the good ID

Any idea ?

for record in records:
  tag_ids = [record.x_studio_compte_analytique.id]
​#tag_ids = [6,7] doesn't work either
  for line in record.order_line:
    line['analytic_distribution']=[(6, 0, tag_ids)]

Awatar
Odrzuć
Autor Najlepsza odpowiedź

Ok, I've found my mistake.
analytic_distribution is a json

The right code is :

for record in records:
  analytic_account_id=record.x_studio_compte_analytique.id
  for line in record.order_line:
    line['analytic_distribution']={str(analytic_account_id): 100.0}
Awatar
Odrzuć

Hi Emmanuel,

I’ve set up the analytic distribution with the following structure:

Project

Department

Branch

Location

Now, I want to automate the analytic distribution such that whenever a record is created and a customer is selected on the sale order, the Location (point 4) in the distribution should be automatically populated.

I’ve written logic that fetches the location-related analytic account from the customer and adds it to the sale order’s analytic distribution. However, the issue is that it's currently being added under 1. Project instead of 4. Location.

Do you have any idea how we can specifically target the 4th column (Location) in the analytic distribution?

Thanks in advance!
Best regards,

Najlepsza odpowiedź

To automate analytic distribution in purchase orders, ensure you're using the correct syntax to update One2many fields. In your code, analytic_distribution should be written as a write operation on line, not dictionary-style assignment. Try this:

for record in records:
    tag_ids = [record.x_studio_compte_analytique.id]
    for line in record.order_line:
        line.write({'analytic_distribution': [(6, 0, tag_ids)]})

Also, make sure analytic_distribution is a Many2many field. This approach correctly assigns the analytic tag to each line. Test it on sample data to confirm it updates as expected.

Awatar
Odrzuć
Najlepsza odpowiedź
line['analytic_distribution']={str(analytic_account_id): 100.0, str(Location_account_id): 100.0, 128: 100.0 }

you can try to use above. it's working for me in the analytic distribution but creating 2 or 3 analytic items which i am trying to resolve.

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
0
maj 24
1525
1
mar 24
1432
1
sty 24
1416
1
paź 22
2564
1
maj 22
2683