|
@@ -0,0 +1,157 @@
|
|
|
+openerp.eiru_purchase_to_sale = function (instance, local) {
|
|
|
+ local.widgetInstance = null;
|
|
|
+ local.parentInstance = null;
|
|
|
+
|
|
|
+ local.PurchaseToSaleWidget = instance.Widget.extend({
|
|
|
+ template : "eiru_purchase_to_sale.PurchaseToSale",
|
|
|
+ init:function(parent){
|
|
|
+ this._super(parent);
|
|
|
+ this.buttons = parent.$buttons;
|
|
|
+ },
|
|
|
+
|
|
|
+ updateId : function(id){
|
|
|
+ var self = this;
|
|
|
+ self.id=id;
|
|
|
+ },
|
|
|
+
|
|
|
+ reloadLine: function() {
|
|
|
+ local.parentInstance.reload();
|
|
|
+ },
|
|
|
+
|
|
|
+ start: function () {
|
|
|
+ var self = this;
|
|
|
+ this.$el.click(function () {
|
|
|
+ self.fecthInitial();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ fecthInitial: function(){
|
|
|
+ var id= openerp.webclient._current_state.id;
|
|
|
+ var self = this;
|
|
|
+ self.fecthSaleOrder(id).then(function(SaleOrder){
|
|
|
+ return SaleOrder;
|
|
|
+ }).then(function(SaleOrder){
|
|
|
+ self.SaleOrder = SaleOrder;
|
|
|
+ return self.fetchPurchaseOrder();
|
|
|
+ }).then(function(PurchaseOrder){
|
|
|
+ self.PurchaseOrder = PurchaseOrder;
|
|
|
+ return self.fetchPurchaseOrderLine();
|
|
|
+ }).then(function(PurchaseOrderLine){
|
|
|
+ self.PurchaseOrderLine = PurchaseOrderLine;
|
|
|
+ self.inicializarBuscador();
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+
|
|
|
+ fecthSaleOrder: function(id){
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var fields=['id'];
|
|
|
+ var domain=[['id','=', id]];
|
|
|
+ var SaleOrder = new instance.web.Model('sale.order');
|
|
|
+ SaleOrder.query(fields).filter(domain).all().then(function(results){
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchPurchaseOrder: function () {
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var fields=['id','name'];
|
|
|
+ var domain=[['state','=','draft']];
|
|
|
+ var PurchaseOrder = new instance.web.Model('purchase.order');
|
|
|
+ PurchaseOrder.query(fields).filter(domain).order_by('id').all().then(function(results){
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ fetchPurchaseOrderLine: function () {
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var fields=['id','product_id','order_id','product_qty'];
|
|
|
+ var domain=[['state','=','draft']];
|
|
|
+ var PurchaseOrderLine = new instance.web.Model('purchase.order.line');
|
|
|
+ PurchaseOrderLine.query(fields).filter(domain).all().then(function(results){
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+
|
|
|
+ inicializarBuscador: function () {
|
|
|
+ var self = this;
|
|
|
+ var SelectOrder;
|
|
|
+ var results = self.PurchaseOrder;
|
|
|
+ results = _.map(results, function (item) {
|
|
|
+ return {
|
|
|
+ label: item.name,
|
|
|
+ value: item.id + '-' + item.name
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $('#PurchaseSearch').autocomplete({
|
|
|
+ source: results,
|
|
|
+ minLength: 3,
|
|
|
+ select: function (e, ui) {
|
|
|
+ $(this).val('');
|
|
|
+ SelectOrder = ui.item;
|
|
|
+ self.factInsertProduct(SelectOrder);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ getPurchaseOrderLine:function(id) {
|
|
|
+ var self = this;
|
|
|
+ return _.flatten(_.filter(self.PurchaseOrderLine,function (inv) {
|
|
|
+ return inv.order_id[0] == id;
|
|
|
+ }));
|
|
|
+ },
|
|
|
+
|
|
|
+ factInsertProduct:function(selectProduct){
|
|
|
+ var self = this;
|
|
|
+ var data = [];
|
|
|
+ var order = selectProduct.value.split('-');
|
|
|
+ var order_line = self.getPurchaseOrderLine(order[0]);
|
|
|
+ _.each(order_line, function(item){
|
|
|
+ data.push({
|
|
|
+ order_id: self.SaleOrder[0].id,
|
|
|
+ product_id: item.product_id[0],
|
|
|
+ product_uom_qty: item.product_qty
|
|
|
+ });
|
|
|
+ });
|
|
|
+ self.joinSaleLine(data).then(function(results) {
|
|
|
+ return results;
|
|
|
+ }).then(function(){
|
|
|
+ self.reloadLine();
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ joinSaleLine: function(data) {
|
|
|
+ var self = this;
|
|
|
+ var defer = $.Deferred();
|
|
|
+ var SaleOrder = new openerp.web.Model('sale.order');
|
|
|
+ SaleOrder.call('join_sale_order_lines',[data], {
|
|
|
+ context: new openerp.web.CompoundContext()
|
|
|
+ }).then(function(results) {
|
|
|
+ defer.resolve(results);
|
|
|
+ });
|
|
|
+ return defer;
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ if (instance.web && instance.web.FormView) {
|
|
|
+ instance.web.FormView.include({
|
|
|
+ load_form: function (record) {
|
|
|
+ this._super.apply(this, arguments);
|
|
|
+ if (this.model !== 'sale.order') return;
|
|
|
+ local.parentInstance = this;
|
|
|
+ if (local.widgetInstance) {
|
|
|
+ local.widgetInstance.updateId(record.id);
|
|
|
+ }
|
|
|
+ local.widgetInstance = new local.PurchaseToSaleWidget(this);
|
|
|
+ var elemento = this.$el.find('.oe_form_sheet.oe_form_sheet_width');
|
|
|
+ elemento = elemento.find('.product_search_box');
|
|
|
+ local.widgetInstance.appendTo(elemento);
|
|
|
+ local.widgetInstance.updateId(record.id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|