Ext.define("App.view.OrderForm", {
extend: "Ext.form.Panel",
xtype: "orderForm",
params: {},
layout: "vbox",
scrollable: true,
onSave: function() {
var me = this,
f = me.getForm();
if (f.isValid()) {
f.submit({
url: App.url("/order/save") + "?_csrf=" + App.csrf,
method: "POST",
submitEmptyText: false,
success: function(form, action) {
App.showMsg("Saved");
if (me.callbackOnSave) {
me.callbackOnSave(action.result.id);
}
}
});
}else{
App.showError(App.localeRes("Invalid information"));
}
},
loadForm: function(params) {
if (!params) return;
var me = this;
me.getForm().load({
url: App.url("/order/load"),
method: "POST",
params: {
id: params.id
},
success: function(form, action) {
Ext.apply(me.params, {id: params.id});
me.down('#refId').setValue(params.id);
me.down("filefield").setDisabled(false);
me.down("#newSheetBtn").setDisabled(false);
me.down("#trackSheetBtn").setDisabled(false);
me.down("#removeSheetBtn").setDisabled(false);
me.down('#photoList').loadPanel();
if (me.callbackOnLoad) {
me.callbackOnLoad(form.getValues());
}
}
});
},
uploadFile: function() {
var me = this;
if (me.down("filefield").getValue() == "") return;
me.getForm().submit({
method: "POST",
waitMsg: "Uploading...",
url: App.url("/file/measurement-sheet/ul") + "?orderId="+me.params.id+"&_csrf=" + App.csrf,
success: function(f, action) {
App.showMsg("Uploaded");
me.down("filefield").setValue("");
me.down('#photoList').loadPanel();
},
failure: function(f, action) {
alert("Uploaded failure");
me.down("filefield").setValue("");
}
});
console.log(App.url("/file/measurement-sheet/ul") + "?orderId="+me.params.id+"&_csrf=" + App.csrf)
},
initComponent: function() {
var me = this;
Ext.apply(me, {
bbar: {
defaultButtonUI: "default",
layout: "hbox",
padding: 0,
items: [
"->",
/*
{
xtype: 'checkbox',
fieldLabel: App.localeRes('Ignored'),
//name: 'ignoreC',
inputValue: '1',
uncheckedValue: '0',
},
*/
{
xtype: "button",
text: App.localeRes("Save"),
ui: "blue",
margin: "0 0 16 0",
formBind: true,
handler: function(button, event) {
me.onSave();
}
}
]
},
items: [
{
xtype: "hidden",
itemId: 'idfield',
name: "id"
},
{
xtype: "fieldcontainer",
width: "100%",
margin: "0 0 10 0",
layout: "hbox",
items: [
{
xtype: "orderTypeCombo",
fieldLabel: App.localeRes("Order No.")+" * ",
name: "type",
width: "40%",
value: 'S-',
allowBlank: false,
listeners:{
change: function(combo, newValue,oldValue){
me.down("#orderCodeField").checkValidOrderNo();
}
}
},
{
xtype: "textfield",
fieldLabel: " ",
labelSeparator: "",
itemId: 'orderCodeField',
labelWidth: 5,
name: "code",
flex: 1,
maxLength: 30,
allowBlank: false,
enableKeyEvents: true,
isPressing: false,
checkValidOrderNo: function(){
var field = me.down("#orderCodeField");
var type = me.down("orderTypeCombo").getValue();
var code = me.down("#orderCodeField").getValue();
var id = me.down("#idfield").getValue();
if(!code){
me.down('#validResult').setHtml('');
return;
}
Ext.Ajax.request({
url: App.url("/order/check-order-no"),
params:{
id: id,
type: type,
code: code
},
success: function(response, opts) {
var result = Ext.decode(response.responseText);
if(result.success){
me.down('#validResult').setHtml('');
field.setValidation();
}else{
me.down('#validResult').setHtml('');
field.setValidation("Order No. has been used.");
}
},
failure: function(response, opts) {
me.down('#validResult').setHtml('');
field.setValidation(response);
},
});
},
listeners:{
change: {
fn:function(field, newValue, oldValue){
field.checkValidOrderNo();
field.isPressing = false;
},
buffer: 1000,
},
keydown: function(field){
if(field.isPressing) return;
me.down('#validResult').setHtml('');
field.isPressing = true;
}
}
},{
xtype: 'label',
html: '',
itemId: 'validResult',
padding: '8 4 8 4',
}
]
},
{
xtype: "orderCombo",
fieldLabel: App.localeRes("Ref. To"),
width: '100%',
name: "ref",
listeners: {
change: function(combo, newValue, oldValue) {
if (combo.getSelection()) {
me.down("#refNoField").setValue(combo.getSelection().get("orderNo"));
} else {
me.down("#refNoField").setValue(null);
}
}
}
},
{
xtype: "hidden",
itemId: "refNoField",
name: "refNo"
},
{
xtype: 'fieldcontainer',
layout: 'hbox',
margin: "0 0 10 0",
width: '100%',
items: [
{
xtype: "customerCombo",
fieldLabel: App.localeRes("Customer")+" * ",
name: "custId",
flex: 1,
allowBlank: false
},
{
xtype: 'button',
text: 'New',
handler: function(button){
App.loadModuleWin('orderForm_CreateCustomerWindow', App.localeRes("Quick Create Customer Window"), {
callbackOnClose: function (isSave, customerId) {
if(isSave){
me.down("customerCombo").getStore().load();
me.down("customerCombo").setValue(customerId);
}
}
});
}
}
]
},
{
xtype: "datefield",
fieldLabel: App.localeRes("Order Date")+" * ",
name: "date",
width: "100%",
value: new Date(),
allowBlank: false
},
{
xtype: "orderStatusCombo",
fieldLabel: App.localeRes("Status")+" * ",
name: "status",
width: "100%",
value: 0,
allowBlank: false
},
{
xtype: "textarea",
fieldLabel: App.localeRes("Remarks"),
name: "remarks",
width: "100%",
height: 80,
maxLength: 200
},
{
xtype: "datefield",
fieldLabel: App.localeRes("Target Date"),
name: "targetCompleteDate",
width: "100%",
},
{
xtype: 'fieldset',
title: App.localeRes("Item(s)"),
width: '100%',
items: [
{
xtype: 'container',
width: '100%',
layout: 'hbox',
items: [
{
xtype: "datefield",
fieldLabel: App.localeRes("Stock Out"),
name: "outDate",
labelAlign: 'top',
flex:1,
},
{
xtype: "datefield",
fieldLabel: App.localeRes("Stock In"),
labelAlign: 'top',
name: "inDate",
flex:1,
},
]
},
{
xtype: 'container',
width: '100%',
layout: 'hbox',
items: [
{
xtype: "textarea",
name: "outRemark",
emptyText: App.localeRes("Remarks"),
submitEmptyText: false,
width: "100%",
height: 60,
flex:1,
},
{
xtype: "textarea",
name: "inRemark",
emptyText: App.localeRes("Remarks"),
submitEmptyText: false,
width: "100%",
height: 60,
flex:1,
},
]
},
{
xtype: 'container',
width: '100%',
layout: 'hbox',
items: [
{
xtype: "stockInOutStatusCombo",
name: "outStatus",
width: "100%",
flex:1,
},
{
xtype: "stockInOutStatusCombo",
name: "inStatus",
width: "100%",
flex:1,
},
]
},
]
},
{
xtype: 'hidden',
name: 'refType',
value: 'order'
},
{
xtype: 'hidden',
name: 'refId',
itemId: 'refId'
},
{
xtype: 'label',
html: ''+App.localeRes("Measurement Sheet")+'',
},
{
xtype: 'container',
layout: 'hbox',
width: '100%',
items: [
{
xtype: "filefield",
disabled: true,
buttonText: App.localeRes("Upload"),
buttonConfig:{
iconCls: 'fas fa-upload',
},
ui: "soft-blue",
name: "multipartFile",
margin: 4,
buttonOnly: true,
accept: "image/*",
listeners: {
change: function(field, value, eOpts) {
me.uploadFile();
}
}
},
{
xtype: 'button',
itemId: 'newSheetBtn',
disabled: true,
ui: 'soft-purple',
iconCls: 'fas fa-download',
margin: 4,
text: App.localeRes("Measurement Sheet"),
handler: function(button, event){
if(!me.params.id) return;
window.open( App.url("/report/measurement-sheet.pdf")+'?orderId=' + me.params.id);
}
},
{
xtype: 'button',
itemId: 'trackSheetBtn',
disabled: true,
ui: 'soft-blue',
margin: 4,
iconCls: "fas fa-history",
text: App.localeRes('Track'),
handler: function(button, event){
if(!me.params.id) return;
App.loadModuleWin('orderSheetWindow', App.localeRes("Track Window"), {
params: {
id: me.params.id
},
callbackOnClose: function (isSave) {
me.down('#photoList').loadPanel();
}
});
}
},
{
xtype: 'container',
flex: 1,
},
{
xtype: 'button',
itemId: 'removeSheetBtn',
disabled: true,
iconCls: 'fas fa-trash',
ui: 'soft-red',
margin: 4,
text: App.localeRes('Remove'),
handler: function(button, event){
if(!me.params.id) return;
var deleteRecord = [];
me.down('#photoList').items.items
.forEach(function(item, index, array){
if(item.selected){
deleteRecord.push({
fileId: item.fileId,
refId: me.refId,
refType: me.refType,
skey: item.skey,
});
}
});
if(deleteRecord.length<=0) return;
Ext.Ajax.request({
url: App.url("/order/save"),
params: {
id: me.params.id,
fileId:'',
},
success: function(response, opts) {
App.showMsg('Removed');
me.down('#photoList').loadPanel();
},
failure: function(response, opts) {
App.showError('Message : ' + response.status);
},
scope: this
});
}
},
]
},
{
xtype: "container",
itemId: "photoList",
items: [],
loadPanel: function() {
var container = this;
if(!me.params.id) return;
Ext.Ajax.request({
url: App.url("/order/get-current-ms.json"),
params: {
orderId: me.params.id
},
success: function(response, opts) {
var result = Ext.decode(response.responseText);
container.removeAll(true);
result.records.forEach(function(item, index, array) {
container.add({
xtype: 'imagefield',
name: item.filename,
thumbnailPath: App.url("/file/thumbnail/"+item.id+"/"+item.skey+"/"+item.filename),
path: App.url("/file/dl/"+item.id+"/"+item.skey+"/"+item.filename),
imageWidth: item.imageWidth,
imageHeight: item.imageHeight,
fileId: item.id,
skey: item.skey,
});
});
},
failure: function(response, opts) {
App.showError('Message : ' + response.status);
},
scope: this
});
}
},
{
xtype: 'label',
width: '100%',
html: '