Sprzedaż i zakupy

Całość operacji sprzedaży i zakupów jest ewidencjonowana w modelach:

  • account.invoice - faktury
  • account.invoice.line - wiersze faktur
  • account.invoice.tax - podatki
  • account.move - dokument księgowy (zapis w dzienniku)
  • account.move.line - wiersze dokumentu księgowego

Przykładowe zapytanie do bazy danych, zwracające informacje związane z obrotem fakturowanym:

select move.id id, move.date date, date_invoice, move.name "name",
(select name from res_partner where res_partner.id=move.partner_id) partner,
(select name from res_currency cur where cur.id=move.currency_id) currency,
amount, move.write_date,
move.create_uid,
inv.number inv_number,
amount_total_company_signed amount_total,
amount_tax,
amount_untaxed,
move.company_id,
move.partner_id,
move.state,
move.journal_id
from account_move move
left outer join account_invoice inv on move.id=inv.move_id

Sposób zaksięgowania podatku pokazuje zapytanie:

select 
  move.name,
  move.ref nr_doc,
  move.partner_id,
  (select sum(ml1.debit) from account_move_line ml1 
   left outer join account_move_line_account_tax_rel taxrel on taxrel.account_move_line_id=ml1.id
   where ml.tax_line_id=taxrel.account_tax_id) amount,
  ml.debit tax_amount,
  ml.tax_line_id,
  tax.amount percent
from account_move_line ml
join account_move move on ml.move_id=move.id
join account_tax tax on ml.tax_line_id=tax.id
where move.state='posted' and tax.type_tax_use='purchase';

Dotyczy to zarówno podatku VAT naliczonego jak i należnego. Decyduje type_tax_use : purchase lub sale. Także w przypadku faktur mamy rozróżnienie zakupu od sprzedaży w polu tekstowym type. Odpowiednio: in_invoice, out_invoice.