12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019 |
- # -*- 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 AS vendedor
- 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 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
- 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,
- 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 AS vendedor
- 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 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,
- 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],
- 'vendedor': 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],
- 'vendedor': 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()
- ]
|