purchase.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. openerp.barcode_purchase_order = function (instance, local) {
  2. local.widgetInstance = null;
  3. local.parentInstance = null;
  4. local.PurchaseOrderSearchWidget = instance.Widget.extend({
  5. template : "barcode_purchase_order.PurchaseOrderSearch",
  6. init:function(parent){
  7. this._super(parent);
  8. this.buttons = parent.$buttons;
  9. },
  10. updateId : function(id){
  11. var self = this;
  12. self.id=id;
  13. },
  14. reloadLine: function() {
  15. local.parentInstance.reload();
  16. },
  17. start: function () {
  18. var self = this;
  19. this.$el.click(function () {
  20. self.fecthInitial();
  21. });
  22. },
  23. showMensaje: function(mensaje){
  24. var self = this;
  25. $("#dialog" ).dialog({
  26. autoOpen: true,
  27. resizable: false,
  28. modal: true,
  29. title: 'Atención',
  30. width: 500,
  31. open: function() {
  32. $(this).html(mensaje);
  33. },
  34. show: {
  35. effect: "fade",
  36. duration: 200
  37. },
  38. hide: {
  39. effect: "fade",
  40. duration: 200
  41. },
  42. buttons: {
  43. Aceptar: function() {
  44. $(this).dialog('close');
  45. }
  46. }
  47. });
  48. return
  49. },
  50. fecthInitial: function(){
  51. var id = openerp.webclient._current_state.id;
  52. var self = this;
  53. self.fecthPurchase(id).then(function(purchase){
  54. return purchase;
  55. }).then(function(purchase){
  56. self.purchase = purchase;
  57. return self.fetchProductProduct();
  58. }).then(function(ProductProduct){
  59. self.ProductProduct = ProductProduct;
  60. self.inicializarBuscador();
  61. });
  62. return false;
  63. },
  64. fecthPurchase: function(id){
  65. var defer = $.Deferred();
  66. var fields=['id','name'];
  67. var domain=[['id','=', id]];
  68. var Purchase = new instance.web.Model('purchase.order');
  69. Purchase.query(fields).filter(domain).all().then(function(results){
  70. defer.resolve(results);
  71. });
  72. return defer;
  73. },
  74. fetchProductProduct: function () {
  75. var defer = $.Deferred();
  76. var fields=['id','name','attribute_str','default_code','ean13','standard_price'];
  77. var domain=[['active','=', true],['purchase_ok','=', true]];
  78. var ProductProduct = new instance.web.Model('product.product');
  79. ProductProduct.query(fields).filter(domain).order_by('id').all().then(function(results){
  80. defer.resolve(results);
  81. });
  82. return defer;
  83. },
  84. getProductProduct : function(id){
  85. var self = this;
  86. return _.filter(self.ProductProduct, function(item){
  87. return item.id == id;
  88. });
  89. },
  90. inicializarBuscador: function () {
  91. var self = this;
  92. var selectProduct;
  93. $("#productSearch").keypress(function(e) {
  94. id = openerp.webclient._current_state.id;
  95. if(id == undefined){
  96. self.showMensaje('Debe guardar el documento antes de continuar.');
  97. self.$el.find('#productSearch').val('');
  98. }
  99. var product = [];
  100. var ean13 = $('#productSearch').val();
  101. var code = (e.keyCode ? e.keyCode : e.which);
  102. if(code==13){
  103. product = _.filter(self.ProductProduct,function (item) {
  104. return item.ean13 == ean13;
  105. })
  106. if(product.length > 0){
  107. self.factInsertProduct(product);
  108. }else{
  109. product = _.filter(self.ProductProduct,function (item) {
  110. var dato = item.ean13;
  111. if(dato){
  112. dato = dato.substring(0,9);
  113. }
  114. return dato == ean13;
  115. })
  116. if(product.length > 0){
  117. self.factInsertProduct(product);
  118. }else{
  119. self.showMensaje('Producto no encontrado.');
  120. }
  121. }
  122. }
  123. });
  124. },
  125. factInsertProduct:function(product){
  126. var self = this;
  127. self.fetchInsert(product, 1).then(function(results) {
  128. return results;
  129. }).then(function(){
  130. self.reloadLine();
  131. });
  132. },
  133. fetchInsert: function(product, qty) {
  134. var self = this;
  135. var defer = $.Deferred();
  136. var purchase = new openerp.web.Model('purchase.order');
  137. purchase.call('purchase_insert_lines_by_eiru_original',[
  138. {
  139. id: self.purchase[0].id,
  140. product_id: product[0].id,
  141. name: product[0].name,
  142. price_unit: product[0].standard_price,
  143. }
  144. ], {
  145. context: new openerp.web.CompoundContext()
  146. }).then(function(results) {
  147. defer.resolve(results);
  148. });
  149. self.$el.find('#productSearch').val('');
  150. return defer;
  151. },
  152. });
  153. if (instance.web && instance.web.FormView) {
  154. instance.web.FormView.include({
  155. load_form: function (record) {
  156. this._super.apply(this, arguments);
  157. if (this.model !== 'purchase.order') return;
  158. local.parentInstance = this;
  159. if (local.widgetInstance) {
  160. local.widgetInstance.updateId(record.id);
  161. }
  162. local.widgetInstance = new local.PurchaseOrderSearchWidget(this);
  163. var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
  164. elemento = elemento.find('.purchase_product_search_box');
  165. local.widgetInstance.appendTo(elemento);
  166. local.widgetInstance.updateId(record.id);
  167. }
  168. });
  169. }
  170. }