123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005 |
- # -*- coding: utf-8 -*-
- from openerp.http import request as r
- def get_account_invoice_line_all_type():
- user_store = r.env.user.store_id.id
- company_currency_rate = r.env.user.company_id.currency_id.rate
- query = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- --line.name,
- journal.store_id,
- template.categ_id
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id
- '''
- r.cr.execute(query,(tuple([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- } for j in r.cr.fetchall()
- ]
- def get_account_invoice_line_out_invoice(): #analisis de venta
- user_store = r.env.user.store_id.id
- company_currency_rate = r.env.user.company_id.currency_id.rate
- validate_brand = '''
- SELECT EXISTS(
- SELECT table_name
- FROM information_schema.columns
- WHERE table_schema='public'
- AND table_name='product_brand')
- '''
- query_with_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (((line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) * line.discount)/100))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- template.product_brand_id,
- brand.name,
- line.discount,
- line.name
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- LEFT JOIN product_brand AS brand
- ON brand.id = template.product_brand_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'out_invoice'
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- template.product_brand_id,
- brand.name,
- line.name
- '''
- query_without_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (((line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) * line.discount)/100))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- line.discount,
- line.name
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'out_invoice'
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- line.name
- '''
- r.cr.execute(validate_brand)
- for j in r.cr.fetchall():
- brand = j[0]
- if brand == True:
- r.cr.execute(query_with_brand,[company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- 'partner_name': j[14],
- 'partner_ruc': j[15],
- 'product_id': j[16],
- 'company_id': j[17],
- 'journal_id': j[18],
- 'attribute_value_ids': j[19],
- 'attribute_values': j[20],
- 'attribute_ids': j[21],
- 'product_brand_id': j[22],
- 'brand_name': j[23],
- 'discount': j[24],
- 'name': j[25],
- } for j in r.cr.fetchall()
- ]
- else:
- r.cr.execute(query_without_brand,[company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- 'partner_ruc': j[14],
- 'partner_name': j[15],
- 'product_id': j[16],
- 'company_id': j[17],
- 'journal_id': j[18],
- 'attribute_value_ids': j[19],
- 'attribute_values': j[20],
- 'attribute_ids': j[21],
- 'discount': j[22],
- 'name': j[23],
- } for j in r.cr.fetchall()
- ]
- def get_account_invoice_line_out_invoice_and_out_refund():
- user_store = r.env.user.store_id.id
- company_currency_rate = r.env.user.company_id.currency_id.rate
- validate_brand = '''
- SELECT EXISTS(
- SELECT table_name
- FROM information_schema.columns
- WHERE table_schema='public'
- AND table_name='product_brand')
- '''
- query_with_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- template.product_brand_id,
- brand.name,
- partner.id
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- LEFT JOIN product_brand AS brand
- ON brand.id = template.product_brand_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type in ('out_invoice','out_refund')
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- template.product_brand_id,
- brand.name,
- partner.id
- '''
- query_without_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- --line.name
- journal.store_id,
- template.categ_id,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- partner.id
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'out_invoice'
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- partner.id
- '''
- r.cr.execute(validate_brand)
- for j in r.cr.fetchall():
- brand = j[0]
- if brand == True:
- r.cr.execute(query_with_brand,(tuple([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- 'partner_name': j[14],
- 'product_id': j[15],
- 'company_id': j[16],
- 'journal_id': j[17],
- 'attribute_value_ids': j[18],
- 'attribute_values': j[19],
- 'attribute_ids': j[20],
- 'product_brand_id': j[21],
- 'brand_name': j[22],
- 'partner_id': j[23],
- } for j in r.cr.fetchall()
- ]
- else:
- r.cr.execute(query_without_brand,(tuple([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- 'partner_name': j[14],
- 'product_id': j[15],
- 'company_id': j[16],
- 'journal_id': j[17],
- 'attribute_value_ids': j[18],
- 'attribute_values': j[19],
- 'attribute_ids': j[20],
- 'partner_id': j[21],
- } for j in r.cr.fetchall()
- ]
- def get_account_invoice_line_in_invoice_purchase():
- user_store = r.env.user.store_id.id
- company_currency_rate = r.env.user.company_id.currency_id.rate
- origin = '%PO%'
- validate_brand = '''
- SELECT EXISTS(
- SELECT table_name
- FROM information_schema.columns
- WHERE table_schema='public'
- AND table_name='product_brand')
- '''
- query_with_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.supplier_invoice_number,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- template.product_brand_id,
- brand.name,
- line.name
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- LEFT JOIN product_brand AS brand
- ON brand.id = template.product_brand_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'in_invoice'
- AND invoice.origin LIKE %s
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.supplier_invoice_number,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- template.product_brand_id,
- brand.name,
- line.name
- '''
- query_without_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.supplier_invoice_number,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- line.name
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'in_invoice'
- AND invoice.origin LIKE %s
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.supplier_invoice_number,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- line.name
- '''
- r.cr.execute(validate_brand)
- for j in r.cr.fetchall():
- brand = j[0]
- if brand == True:
- r.cr.execute(query_with_brand,([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate,origin]))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'supplier_invoice_number': j[4],
- 'date': j[5],
- 'type': j[6],
- 'product_name':j[7],
- 'price_unit':j[8],
- 'quantity':j[9],
- 'subtotal':j[10],
- 'tax': j[11],
- 'cost': j[12],
- 'store_id': j[13],
- 'categ_id': j[14],
- 'partner_ruc': j[15],
- 'partner_name': j[16],
- 'product_id': j[17],
- 'company_id': j[18],
- 'journal_id': j[19],
- 'attribute_value_ids': j[20],
- 'attribute_values': j[21],
- 'attribute_ids': j[22],
- 'product_brand_id': j[23],
- 'brand_name': j[24],
- 'name': j[25],
- } for j in r.cr.fetchall()
- ]
- else:
- r.cr.execute(query_without_brand,([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate,origin]))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'supplier_invoice_number': j[4],
- 'date': j[5],
- 'type': j[6],
- 'product_name':j[7],
- 'price_unit':j[8],
- 'quantity':j[9],
- 'subtotal':j[10],
- 'tax': j[11],
- 'cost': j[12],
- 'store_id': j[13],
- 'categ_id': j[14],
- 'partner_ruc': j[15],
- 'partner_name': j[16],
- 'product_id': j[17],
- 'company_id': j[18],
- 'journal_id': j[19],
- 'attribute_value_ids': j[20],
- 'attribute_values': j[21],
- 'attribute_ids': j[22],
- 'name': j[23],
- } for j in r.cr.fetchall()
- ]
- def get_account_invoice_line_in_invoice_expense():
- user_store = r.env.user.store_id.id
- company_currency_rate = r.env.user.company_id.currency_id.rate
- origin = '%PO%'
- validate_brand = '''
- SELECT EXISTS(
- SELECT table_name
- FROM information_schema.columns
- WHERE table_schema='public'
- AND table_name='product_brand')
- '''
- query_with_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- template.product_brand_id,
- brand.name,
- line.name
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- LEFT JOIN product_brand AS brand
- ON brand.id = template.product_brand_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'in_invoice'
- AND (invoice.origin NOT LIKE %s OR invoice.origin IS NULL)
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- template.product_brand_id,
- brand.name,
- line.name
- '''
- query_without_brand = '''
- SELECT
- invoice.id AS invoice_id,
- line.id AS invoice_line_id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- invoice.type,
- CASE
- WHEN product.default_code IS NOT NULL
- THEN ('[' || product.default_code || '] ' || product.name_template)
- ELSE product.name_template
- END AS display_name,
- line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) as price_unit,
- line.quantity AS cant,
- line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]) AS subtotal,
- (line.quantity * (line.price_unit * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1]))) - (line.price_subtotal * (%s / (array_agg(rate.rate ORDER BY rate.id DESC))[1])) AS impuestos,
- (array_agg(history.cost ORDER BY history.id DESC))[1] AS cost,
- journal.store_id,
- template.categ_id,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- (array_agg(attr_rel.att_id)) AS attr_rel,
- (array_agg(attr_value.name)) AS attr_value,
- (array_agg(attr.id)) AS attr,
- line.name
- FROM account_invoice AS invoice
- LEFT JOIN account_invoice_line AS line
- ON line.invoice_id = invoice.id
- --Product
- LEFT JOIN product_product AS product
- ON line.product_id = product.id
- LEFT JOIN product_template AS template
- ON template.id = product.product_tmpl_id
- LEFT JOIN product_attribute_value_product_product_rel AS attr_rel
- ON attr_rel.prod_id = product.id
- LEFT JOIN product_attribute_value AS attr_value
- ON attr_value.id = attr_rel.att_id
- LEFT JOIN product_attribute AS attr
- ON attr.id = attr_value.attribute_id
- LEFT JOIN res_store_journal_rel AS journal
- ON journal.journal_id = invoice.journal_id
- LEFT JOIN product_price_history AS history
- ON history.product_template_id = product.product_tmpl_id
- LEFT JOIN res_currency_rate AS rate
- ON rate.currency_id = invoice.currency_id
- LEFT JOIN res_partner AS partner
- ON partner.id = invoice.partner_id
- WHERE invoice.state NOT IN ('draft', 'cancel')
- AND invoice.type = 'in_invoice'
- AND (invoice.origin NOT LIKE %s OR invoice.origin IS NULL)
- GROUP BY
- invoice.id,
- line.id,
- invoice.number,
- invoice.origin,
- invoice.date_invoice,
- product.name_template,
- line.price_unit,
- line.quantity,
- line.price_subtotal,
- journal.store_id,
- template.categ_id,
- product.default_code,
- partner.ruc,
- partner.name,
- product.id,
- invoice.company_id,
- invoice.journal_id,
- line.name
- '''
- r.cr.execute(validate_brand)
- for j in r.cr.fetchall():
- brand = j[0]
- if brand == True:
- r.cr.execute(query_with_brand,([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate,origin]))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- 'partner_ruc': j[14],
- 'partner_name': j[15],
- 'product_id': j[16],
- 'company_id': j[17],
- 'journal_id': j[18],
- 'attribute_value_ids': j[19],
- 'attribute_values': j[20],
- 'attribute_ids': j[21],
- 'product_brand_id': j[22],
- 'brand_name': j[23],
- 'name': j[24],
- } for j in r.cr.fetchall()
- ]
- else:
- r.cr.execute(query_without_brand,([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate,origin]))
- return [
- {
- 'invoice_id': j[0],
- 'invoice_line_id': j[1],
- 'number': j[2],
- 'origin': j[3],
- 'date': j[4],
- 'type': j[5],
- 'product_name':j[6],
- 'price_unit':j[7],
- 'quantity':j[8],
- 'subtotal':j[9],
- 'tax': j[10],
- 'cost': j[11],
- 'store_id': j[12],
- 'categ_id': j[13],
- 'partner_ruc': j[14],
- 'partner_name': j[15],
- 'product_id': j[16],
- 'company_id': j[17],
- 'journal_id': j[18],
- 'attribute_value_ids': j[19],
- 'attribute_values': j[20],
- 'attribute_ids': j[21],
- 'name': j[22],
- } for j in r.cr.fetchall()
- ]
|