GoodsSend.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.fa.ars.GoodsSend', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. GridUtil: Ext.create('erp.util.GridUtil'),
  6. BaseUtil: Ext.create('erp.util.BaseUtil'),
  7. views:[
  8. 'core.form.Panel','fa.ars.GoodsSend','core.grid.Panel2','core.toolbar.Toolbar',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.ResSubmit',
  11. 'core.button.Post','core.button.ResPost','core.trigger.CateTreeDbfindTrigger',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.button.AutoInvoice',
  13. 'core.form.MonthDateField'
  14. ],
  15. init:function(){
  16. var me = this;
  17. me.gridLastSelected = null;
  18. this.control({
  19. 'erpGridPanel2': {
  20. itemclick: this.onGridItemClick
  21. },
  22. 'field[name=gs_currency]': {
  23. beforetrigger: function(field) {
  24. var t = field.up('form').down('field[name=gs_date]'),
  25. value = t.getValue();
  26. if(value) {
  27. field.findConfig = 'cm_yearmonth=' + Ext.Date.format(value, 'Ym');
  28. }
  29. }
  30. },
  31. 'erpSaveButton': {
  32. click: function(btn){
  33. var form = me.getForm(btn);
  34. if(Ext.getCmp(form.codeField).value == null || Ext.getCmp(form.codeField).value == ''){
  35. me.BaseUtil.getRandomNumber();
  36. }
  37. this.getAmount();
  38. this.getSaleamount();
  39. //保存之前的一些前台的逻辑判定
  40. this.beforeSaveGoodsSend();
  41. }
  42. },
  43. 'erpDeleteButton' : {
  44. click: function(btn){
  45. me.FormUtil.onDelete(Ext.getCmp('gs_id').value);
  46. }
  47. },
  48. 'erpUpdateButton': {
  49. click: function(btn){
  50. me.beforeUpdate();
  51. }
  52. },
  53. 'erpAddButton': {
  54. click: function(){
  55. var form = Ext.getCmp('form');
  56. var title = '新增';
  57. if(form){
  58. if(form.title){
  59. title = title+form.title;
  60. }
  61. }
  62. me.FormUtil.onAdd('addGoosSend', title, 'jsps/fa/ars/goodsSend.jsp?whoami='+caller);
  63. }
  64. },
  65. 'erpCloseButton': {
  66. click: function(btn){
  67. me.FormUtil.beforeClose(me);
  68. }
  69. },
  70. 'erpSubmitButton': {
  71. afterrender: function(btn){
  72. var status = Ext.getCmp(me.getForm(btn).statuscodeField),
  73. poststatus = Ext.getCmp('gs_statuscode');
  74. if(status && status.value != 'ENTERING'){
  75. btn.hide();
  76. }
  77. if(poststatus && poststatus.value == 'POSTED'){
  78. btn.hide();
  79. }
  80. },
  81. click: function(btn){
  82. this.getAmount();
  83. this.getSaleamount();
  84. me.FormUtil.onSubmit(Ext.getCmp('gs_id').value);
  85. }
  86. },
  87. 'erpResSubmitButton': {
  88. afterrender: function(btn){
  89. var status = Ext.getCmp(me.getForm(btn).statuscodeField),
  90. poststatus = Ext.getCmp('gs_statuscode');
  91. if(status && status.value != 'COMMITED'){
  92. btn.hide();
  93. }
  94. if(poststatus && poststatus.value == 'POSTED'){
  95. btn.hide();
  96. }
  97. },
  98. click: function(btn){
  99. me.FormUtil.onResSubmit(Ext.getCmp('gs_id').value);
  100. }
  101. },
  102. 'erpAuditButton': {
  103. afterrender: function(btn){
  104. var status = Ext.getCmp(me.getForm(btn).statuscodeField),
  105. poststatus = Ext.getCmp('gs_statuscode');
  106. if(status && status.value != 'COMMITED'){
  107. btn.hide();
  108. }
  109. if(poststatus && poststatus.value == 'POSTED'){
  110. btn.hide();
  111. }
  112. },
  113. click: function(btn){
  114. me.FormUtil.onAudit(Ext.getCmp('gs_id').value);
  115. }
  116. },
  117. 'erpResAuditButton': {
  118. afterrender: function(btn){
  119. var status = Ext.getCmp(me.getForm(btn).statuscodeField),
  120. postStatus = Ext.getCmp('gs_statuscode');
  121. if((status && status.value != 'AUDITED') ||(postStatus && postStatus.value == 'POSTED')){
  122. btn.hide();
  123. }
  124. },
  125. click: function(btn){
  126. me.FormUtil.onResAudit(Ext.getCmp('gs_id').value);
  127. }
  128. },
  129. 'erpPrintButton': {
  130. click: function(btn){
  131. me.FormUtil.onPrint(Ext.getCmp('gs_id').value);
  132. }
  133. },
  134. 'erpPostButton': {
  135. afterrender: function(btn){
  136. var status = Ext.getCmp('gs_statuscode');
  137. if(status && status.value != 'UNPOST'){
  138. btn.hide();
  139. }
  140. },
  141. click: function(btn){
  142. me.FormUtil.onPost(Ext.getCmp('gs_id').value);
  143. }
  144. },
  145. 'erpResPostButton': {
  146. afterrender: function(btn){
  147. var status = Ext.getCmp('gs_statuscode');
  148. if(status && status.value != 'POSTED'){
  149. btn.hide();
  150. }
  151. },
  152. click: function(btn){
  153. me.FormUtil.onResPost(Ext.getCmp('gs_id').value);
  154. }
  155. }
  156. });
  157. },
  158. //计算发票金额 并写入主表总额字段
  159. getAmount: function(){
  160. var grid = Ext.getCmp('grid');
  161. var items = grid.store.data.items;
  162. var amount = 0;
  163. Ext.each(items,function(item,index){
  164. if(item.data['gsd_ordercode']!=null&&item.data['gsd_ordercode']!=""){
  165. amount= amount + Number(item.data['gsd_amount']);
  166. }
  167. });
  168. Ext.getCmp('gs_amount').setValue(Ext.Number.toFixed(amount, 2));
  169. },
  170. //计算销售金额 并写入主表销售金额字段
  171. getSaleamount: function(){
  172. var grid = Ext.getCmp('grid');
  173. var items = grid.store.data.items;
  174. var amount = 0;
  175. Ext.each(items,function(item,index){
  176. if(item.data['gsd_ordercode']!=null&&item.data['gsd_ordercode']!=""){
  177. amount= amount + Number(item.data['gsd_sendprice'])* Number(item.data['gsd_qty']);
  178. }
  179. });
  180. Ext.getCmp('gs_saleamount').setValue(Ext.Number.toFixed(amount, 2));
  181. },
  182. //此CALLER为 应收发票维护界面 修改单据需要把明细行中开票数据还原
  183. // //在此做还原操作
  184. onGridItemClick: function(selModel, record){//grid行选择
  185. this.gridLastSelected = record;
  186. var grid = Ext.getCmp('grid');
  187. if(record.data[grid.necessaryField] == null || record.data[grid.necessaryField] == ''){
  188. this.gridLastSelected.findable = true;//空数据可以在输入完code,并移开光标后,自动调出该条数据
  189. } else {
  190. this.gridLastSelected.findable = false;
  191. }
  192. this.GridUtil.onGridItemClick(selModel, record);
  193. },
  194. getForm: function(btn){
  195. return btn.ownerCt.ownerCt;
  196. },
  197. beforeSaveGoodsSend: function(){
  198. //保存ARBill
  199. /*if(bool)*/
  200. this.FormUtil.beforeSave(this);
  201. },
  202. beforeUpdate: function(){
  203. var grid = Ext.getCmp('grid'), items = grid.store.data.items;
  204. var bool = true;
  205. Ext.Array.each(grid.store.data.items, function(item){
  206. item.set('gsd_gsid',Ext.getCmp('gs_id').value);
  207. });
  208. Ext.each(items, function(item) {
  209. if (!Ext.isEmpty(item.data['gsd_picode'])) {
  210. if (!Ext.isEmpty(item.data['pd_piclass'])) {
  211. if(item.data['pd_piclass'] == '出货单'){
  212. if(item.data['gsd_qty'] < 0){
  213. bool = false;
  214. showError('明细表第' + item.data['gsd_detno'] + '行的来源类型为' + item.data['pd_piclass'] + ',数量不能填写负数');
  215. return;
  216. }
  217. } else if (item.data['pd_piclass'] == '销售退货单'){
  218. if(item.data['gsd_qty'] > 0){
  219. bool = false;
  220. showError('明细表第' + item.data['gsd_detno'] + '行的来源类型为' + item.data['pd_piclass'] + ',数量不能填写正数');
  221. return;
  222. }
  223. }
  224. }
  225. }
  226. });
  227. //保存
  228. if(bool)
  229. this.FormUtil.onUpdate(this);
  230. }
  231. });