update misc copyright dates
[xtuple] / enyo-client / extensions / source / purchasing / database / source / xm / javascript / purchase_order.sql
1 select xt.install_js('XM','PurchaseOrder','purchasing', $$
2 /* Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
3    See www.xtuple.com/CPAL for the full text of the software license. */
4
5 (function () {
6
7   if (!XM.PurchaseOrder) { XM.PurchaseOrder = {}; }
8
9   XM.PurchaseOrder.isDispatchable = true;
10
11   /**
12     Release a Purchase Order.
13     
14     @param {String} Purchase Order Number
15   */
16   XM.PurchaseOrder.release = function(id) {
17     var orm = XT.Orm.fetch("XM", "PurchaseOrder"),
18       data = Object.create(XT.Data),
19       id = data.getId(orm, id);
20
21     /* Make sure user can do this */
22     if (!XT.Data.checkPrivilege("ReleasePurchaseOrders")) {
23       throw new handleError("Access Denied", 401);
24     }
25
26     XT.executeFunction("releasePurchaseOrder", [id]);
27     return true;
28   };
29
30   /**
31     Unrelease a Purchase Order.
32     
33     @param {String} Purchase Order Number
34   */
35   XM.PurchaseOrder.unrelease = function(id) {
36     var orm = XT.Orm.fetch("XM", "PurchaseOrder"),
37       data = Object.create(XT.Data),
38       id = data.getId(orm, id);
39
40     /* Make sure user can do this */
41     if (!XT.Data.checkPrivilege("UnreleasePurchaseOrders")) {
42       throw new handleError("Access Denied", 401);
43     }
44
45     XT.executeFunction("unreleasePurchaseOrder", [id]);
46     return true;
47   };
48
49   /**
50     Return whether a Purchase Order is referenced by another table.
51     
52     @param {String} Purchase Order Number
53   */
54   XM.PurchaseOrder.used = function(id, ignoreStatus) {
55     var sql = "select pohead_status from pohead where pohead_number=$1";
56       status = plv8.execute(sql, [id])[0].pohead_status;
57
58     if (!ignoreStatus && status !== "U") { return true; }
59
60     sql = "select count(*) > 0 as used " +
61           "from recv " +
62           "where recv_order_type='PO' and recv_order_number = $1;";
63     return plv8.execute(sql, [id])[0].used;
64   };
65
66 }());
67   
68 $$ );