소스 검색

[FIX] Imprimir productos diferenciando por categoria

Rodney Elpidio Enciso Arias 7 년 전
부모
커밋
80ea7e6bc2
2개의 변경된 파일55개의 추가작업 그리고 4개의 파일을 삭제
  1. 52 1
      static/src/js/main.js
  2. 3 3
      static/src/xml/pos.xml

+ 52 - 1
static/src/js/main.js

@@ -35,18 +35,69 @@ openerp.eiru_kitchen_ticket = function (instance) {
             this.pos.get('selectedOrder')._printed = true;
             window.print();
         },
+
         back: function(){
             var previous = this.pos.get('selectedOrder').get_screen_data('previous-screen');
             if(previous){
                 this.pos_widget.screen_selector.set_current_screen(previous);
             }
         },
+        
         refresh: function() {
+            var self = this;
             var order = this.pos.get('selectedOrder');
+            var categories = self.pos.printers[0].config.product_categories_ids;
+            var resume = {};
+            
+            order.get('orderLines').each(function(item){
+                var line = item.export_as_JSON();
+                if( typeof resume[line.product_id] === 'undefined'){
+                    resume[line.product_id] = line.qty;
+                }else{
+                    resume[line.product_id] += line.qty;
+                }
+            });
+            
+            var current = resume;
+            var add = [];
+
+            for( product in current){
+                add.push({
+                    'id': product,
+                    'name': this.pos.db.get_product_by_id(product).display_name,
+                    'quantity': current[product],
+                });
+            }
+
+            if(categories && categories.length > 0){
+                function product_in_category(product_id){
+                    var cat = self.pos.db.get_product_by_id(product_id).pos_categ_id[0];
+                    while(cat){
+                        for(var i = 0; i < categories.length; i++){
+                            if(cat === categories[i]){
+                                return true;
+                            }
+                        }
+                        cat = self.pos.db.get_category_parent_id(cat);
+                    }
+
+                    return false;
+                }
+
+                var _add = [];
+                for(var i = 0; i < add.length; i++){
+                    if(product_in_category(add[i].id)){
+                        _add.push(add[i]);
+                    }
+                }
+                add = _add;
+            }
+
             $('.pos-receipt-container', this.$el).html(QWeb.render('KitchenTicket',{
                 widget:this,
                 order: order,
                 orderlines: order.get('orderLines').models,
+                filterLines: add,
             }));
         },
     });
@@ -63,7 +114,7 @@ openerp.eiru_kitchen_ticket = function (instance) {
             var kitchen_ticket_button = $(QWeb.render('KitchenTicketButton'));
 
             kitchen_ticket_button.click(function(){
-                if(self.pos.get('selectedOrder').get('orderLines').models.length > 0){
+                if(self.pos.get('selectedOrder').get('orderLines').models.length > 0){ 
                     self.pos_widget.screen_selector.set_current_screen('kitchenticket');
                 }
             });

+ 3 - 3
static/src/xml/pos.xml

@@ -32,13 +32,13 @@
                         <col width='80%' />
                         <col width='20%' />
                     </colgroup>
-                    <t t-foreach="orderlines" t-as="orderline">
+                    <t t-foreach="filterLines" t-as="item">
                        <tr>
                             <td>
-                                <t t-esc="orderline.get_product().display_name"/>
+                                <t t-esc="item.name"/>
                             </td>
                             <td class="pos-right-align">
-                                <t t-esc="orderline.get_quantity_str_with_unit()"/>
+                                <t t-esc="item.quantity"/>
                             </td>
                         </tr>
                         <tr>