1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015 |
- # -*- 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,
- sales_partner.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
- LEFT JOIN res_users AS sales_user
- ON sales_user.id = invoice.user_id
- LEFT JOIN res_partner AS sales_partner
- ON sales_partner.id = sales_user.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,
- template.product_brand_id,
- brand.name,
- line.name,
- sales_partner.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,
- sales_partner.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,
- sales_partner.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],
- 'vendor_name': j[26],
- } 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],
- 'vendor_name': j[24],
- } 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()
- ]
|