瀏覽代碼

Dashboard Mocona Doctores

sebastian 5 年之前
父節點
當前提交
2d9f2814fb

+ 1 - 1
controllers/helpers/__init__.py

@@ -7,4 +7,4 @@ from res_user import get_user_info
 from res_partner import get_res_partner
 from res_store import get_res_store_widget
 from account_invoice import get_account_invoice
-from account_invoice_line import get_account_invoice_line_widget
+from account_invoice_line import get_account_invoice_line_out_invoice1

二進制
controllers/helpers/__init__.pyc


+ 203 - 25
controllers/helpers/account_invoice_line.py

@@ -1,10 +1,20 @@
 # -*- coding: utf-8 -*-
+
 from openerp.http import request as r
 
-def get_account_invoice_line_widget():
+def get_account_invoice_line_out_invoice1(): #analisis de venta
     user_store = r.env.user.store_id.id
     company_currency_rate = r.env.user.company_id.currency_id.rate
-    query = '''
+
+    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,
@@ -12,27 +22,137 @@ def get_account_invoice_line_widget():
         	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,
+            line.medic_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 = '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,
+            --line.name,
+            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,
+            line.medic_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,
+        	(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,
             line.medic_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
-            WHERE invoice.state NOT IN ('draft', 'cancel') AND invoice.type = 'out_invoice'
-            AND TO_CHAR(invoice.date_invoice,'YYYY-MM') = TO_CHAR(current_date,'YYYY-MM')
-            AND journal.store_id = ''' + str(user_store) + '''
+            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,
@@ -40,29 +160,87 @@ def get_account_invoice_line_widget():
         	invoice.origin,
         	invoice.date_invoice,
         	product.name_template,
+            -- line.name,
         	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,
             line.medic_id
     '''
 
-    r.cr.execute(query,(tuple([company_currency_rate,company_currency_rate,company_currency_rate,company_currency_rate])))
+    r.cr.execute(validate_brand)
+    for j in r.cr.fetchall():
+        brand = j[0]
 
-    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],
-            'history_id': [12],
-            'medic_id': [13],
-        } for j in r.cr.fetchall()
-    ]
+    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],
+                'medic_id': 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],
+                'medic_id': j[24],
+            } for j in r.cr.fetchall()
+        ]

二進制
controllers/helpers/account_invoice_line.pyc


+ 1 - 1
controllers/main.py

@@ -42,5 +42,5 @@ class DashboardController3(http.Controller):
             'company': hp.get_company_info(),
             'invoices':hp.get_account_invoice(),
             'users': hp.get_user_info(),
-            'invoiceslines': hp.get_account_invoice_line_widget(),
+            'invoiceslines': hp.get_account_invoice_line_out_invoice1(),
         })

二進制
controllers/main.pyc


+ 5 - 14
static/src/js/widgets/ranking_doctores.js

@@ -48,32 +48,23 @@ function ranking_doctores(widget) {
 
         SalesmanRanking: function() {
             var self = this;
-            console.log(self);
             var ranking = [];
             var amount = 0;
             var ResUser = self.ResUser;
-            //console.log(ResUser);
+            var InvoiceLine= self.AccountInvoiceLine
+
             _.each(ResUser, function (item) {
-                var AccountInvoiceLine = self.getAccountInvoiceLine(item.medic_id);
-                // _.each(AccountInvoiceLine, function (item1) {
-                //     if(item1.medic_id){
-                // var AccountInvoice = self.getAccountInvoice(AccountInvoiceLine.invoice_id);
+                var AccountInvoiceLine = self.getAccountInvoiceLine(item.id);
+                
 
-                //
-                //         if(item1.type == 'out_invoice'){
 
                             var account_invoice_amount = _.reduce(_.map(AccountInvoiceLine,function(item) {
-                                return item.quantity;
+                                return item.subtotal;
                             }),function(memo, num) {
                                 return memo + num;
                             },0);
                             amount = (account_invoice_amount);
 
-                    //     }
-                    //
-                    //
-                //     }
-                // });
                 if(amount > 0 ){
                    ranking.push({
                        name: item.name,