Guest User

Untitled

a guest
Sep 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. odoo.define('module_name.models', function (require) {
  2. var gui = require('point_of_sale.gui');
  3. var screens = require('point_of_sale.screens');
  4. var core = require('web.core');
  5. var qweb = core.qweb;
  6. var syncing = require('client_get_notify');
  7. var Model = require('web.Model');
  8. var chrome = require('point_of_sale.chrome');
  9. var models = require('point_of_sale.models');
  10. var _t = core._t;
  11.  
  12. //Add field to load models
  13. models.load_fields('product.product', ['price']);
  14. models.load_fields('model_name', ['new field']);
  15. //Load new models
  16. models.load_models({
  17. model: 'category.mapping.line',
  18. fields: ['categ_ids', 'next_pos_config_id','ip_address','config_id',],
  19. domain: function(self){ return [['config_id','=',self.config.id]]; },
  20. loaded: function(self, category_mappings){
  21. self.category_mappings = category_mappings
  22. self.next_screen_by_categ = {}
  23. for (var i = 0; i < category_mappings.length; i++) {
  24. for (var j = 0; j < category_mappings[i].categ_ids.length; j++) {
  25. self.next_screen_by_categ[category_mappings[i].categ_ids[j]] = category_mappings[i].next_pos_config_id;
  26. }
  27. }
  28. },
  29. });
  30.  
  31. //Send message to bus
  32.  
  33. this.pos_bus.push_message_to_other_sessions({
  34. action: 'sync_next_screen',
  35. data: {
  36. uid: line.uid,
  37. next_screen: line.next_screen,
  38. summary_screen: line.summary_screen,
  39. popup_option: 'Transfer Out',
  40. reward: line.reward
  41. },
  42. order: line.export_as_JSON(),
  43. bus_id: this.config.bus_id[0],
  44. });
  45.  
  46. //Call function python in model
  47.  
  48. new Model("pos.sales.order").call("confirm_sale",
  49. [line.order.uid], {}).then(function (results) {
  50. console.log('Confirm order: ', results);
  51. });
  52.  
  53. //Inherit screen
  54.  
  55. var kitchen_screen = null
  56. for (var index in gui.Gui.prototype.screen_classes) {
  57. if(gui.Gui.prototype.screen_classes[index].name=='kitchen_screen'){
  58. kitchen_screen =gui.Gui.prototype.screen_classes[index].widget
  59. gui.Gui.prototype.screen_classes.splice(index, 1);
  60. }
  61. }
  62.  
  63. var KitchenScreenWidget = kitchen_screen.extend({
  64. renderElement: function () {
  65. },
  66. });
  67. gui.define_screen({
  68. 'name': 'kitchen_screen',
  69. 'widget': KitchenScreenWidget,
  70. });
  71.  
  72. var model_list = models.PosModel.prototype.models
  73. var _t = core._t;
  74. var _super_posmodel = models.PosModel.prototype;
  75.  
  76. //--Fetching product model dictionary--
  77. models.load_fields('product.product',['qty_available','virtual_available','outgoing_qty','type']);
  78. var product_model = null;
  79. for(var i = 0,len = model_list.length;i<len;i++){
  80. if(model_list[i].model == "product.product"){
  81. product_model = model_list[i];
  82. break;
  83. }
  84. }
  85.  
  86. //--Updating product model dictionary--
  87. var super_product_loaded = product_model.loaded;
  88. product_model.context= function(self){ return { pricelist: self.pricelist.id, display_default_code: false ,location: self.config.stock_location_id[0]}; },
  89. product_model.loaded = function(self,products){
  90. if(self.config.wk_hide_out_of_stock){
  91. var available_product = [];
  92. for(var i = 0,len = products.length; i<len; i++){
  93. switch(self.config.wk_stock_type){
  94. case'forecasted_qty':
  95. if(products[i].virtual_available>0||products[i].type == 'service')
  96. available_product.push(products[i]);
  97. break;
  98. case'virtual_qty':
  99. if((products[i].qty_available-products[i].outgoing_qty)>0||products[i].type == 'service')
  100. available_product.push(products[i]);
  101. break;
  102. default:
  103. if(products[i].qty_available>0||products[i].type == 'service')
  104. available_product.push(products[i]);
  105. }
  106. }
  107. products = available_product;
  108. }
  109. var results={}
  110. for(var i = 0,len=products.length;i<len;i++){
  111. switch(self.config.wk_stock_type){
  112. case'available_qty':
  113. results[products[i].id]=products[i].qty_available
  114. break;
  115. case'forecasted_qty':
  116. results[products[i].id]=products[i].virtual_available
  117. break;
  118. default:
  119. results[products[i].id]=products[i].qty_available-products[i].outgoing_qty
  120. }
  121. }
  122. self.set({'wk_product_qtys' : results});
  123. self.chrome.wk_change_qty_css();
  124. super_product_loaded.call(this,self,products);
  125. },
  126. })
Add Comment
Please, Sign In to add comment