Skip to content

Instantly share code, notes, and snippets.

@foxweb
Created May 6, 2010 11:32
Show Gist options
  • Save foxweb/392028 to your computer and use it in GitHub Desktop.
Save foxweb/392028 to your computer and use it in GitHub Desktop.
nsMain.OrderForm = Ext.extend(Ext.form.FormPanel, {
initComponent: function(){
var old_delivery_type;
var old_delivery_city;
var old_delivery_country;
var old_delivery_metro;
Ext.apply(this, {
url: '/office/server/callcenter/server.php',
frame: false,
old_delivery_type: '',
border: false,
autoScroll: true,
buttonAlign: 'center',
items: [{
layout: 'form',
border: false,
bodyStyle: 'padding: 0 0 0 10',
items: [{
xtype: 'label',
name: 'text_label',
id: 'text_label',
text: 'Номер заказа',
height: 40
}, {
xtype: 'textfield',
name: 'id',
id: 'id',
fieldLabel: 'ID заказа',
hideLabel: true,
hidden: true
}, {
xtype: 'textfield',
name: 'order_number',
disabled: true,
hideLabel: true,
hidden: true,
id: 'order_number',
fieldLabel: 'Номер заказа'
}, {
xtype: 'OrderItemsGrid',
id: 'order-items-grid',
height: 150
}, {
layout: 'column',
border: false,
items: [{
columnWidth: .4,
border: false,
layout: 'form',
bodyStyle: 'padding: 5 5 0 10',
items: [{
xtype: 'OrderCommentTab',
Comment: 'ordercreate-comment',
width: 400,
Comment_CS: 'ordercreate-comment_cs',
Comment_ST: 'ordercreate-comment_st',
id: 'orderdatacomment-tab'
}, {
xtype: 'CustomerDataTab',
width: 400,
nameid: '',
id: 'customerdata-tab'
}]
}, {
columnWidth: .3,
border: false,
layout: 'form',
bodyStyle: 'padding: 5 5 0 10',
items: [{
xtype: 'textfield',
disabled: true,
id: 'code',
name: 'code',
hideLabel: true,
hidden: true,
fieldLabel: 'Код скидки',
anchor: '95%'
}, {
xtype: 'textfield',
id: 'discount',
disabled: true,
hideLabel: true,
hidden: true,
name: 'discount',
fieldLabel: 'Скидка',
anchor: '95%'
}, {
html: '<center><b>Информация доставке</b></center>',
border: false
}, {
xtype: 'textfield',
name: 'delivery_id',
id: 'delivery_id',
hideLabel: true,
hidden: true,
anchor: '95%'
}, {
xtype: 'LSTCombo',
id: 'delivery_type',
name: 'delivery_type',
fieldLabel: 'Способ доставки',
tblName: 'lst_delivery_types',
order: 'name',
forceSelection: true,
listWidth: 150,
triggerAction: 'all',
emptyText: 'Способ доставки',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%'
}, {
xtype: 'datefield',
fieldLabel: 'Дата доставки',
renderer: Ext.util.Format.dateRenderer('d.m.Y'),
format: 'd.m.Y',
name: 'delivery_date',
id: 'delivery_date',
anchor: '95%'
}, {
layout: 'column',
border: false,
items: [{
columnWidth: .45,
layout: 'form',
border: false,
items: [{
xtype: 'numberfield',
name: 'delivery_time_min',
id: 'delivery_time_min',
fieldLabel: 'Время доствки с ',
labelSeparator: '',
anchor: '95%'
}]
}, {
columnWidth: .10,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: ' до ',
width: 50
}]
}, {
columnWidth: .45,
layout: 'form',
border: false,
items: [{
xtype: 'numberfield',
name: 'delivery_time_max',
id: 'delivery_time_max',
hideLabel: true,
labelSeparator: '',
anchor: '95%'
}]
}]
}, {
xtype: 'ASCombo',
id: 'delivery_country',
name: 'delivery_country',
fieldLabel: 'Страна',
listWidth: 250,
tblName: 'lst_country',
forceSelection: true,
triggerAction: 'all',
comboParam: 'fc_country',
comboValueField: 'id',
comboResponseField: 'name',
comboDisplayField: 'name',
emptyText: 'Страна',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%'
}, {
xtype: 'ASCombo',
id: 'delivery_city',
name: 'delivery_city',
fieldLabel: 'Город',
tblName: 'lst_city',
forceSelection: false,
comboParam: 'fc_city',
listWidth: 250,
comboValueField: 'id',
comboResponseField: 'name',
comboDisplayField: 'name',
triggerAction: 'all',
emptyText: 'Город',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%',
listeners: {
select: function(combo, record, index){
//this.changed = true;
//alert(record.get('id'));
Ext.getCmp('delivery_place').conditions = Ext.encode([['del', ' = ', '0'], ['city_id', ' = ', record.get('id')]]);
}
}
}, {
xtype: 'ASCombo',
id: 'delivery_metro',
name: 'delivery_metro',
fieldLabel: 'Метро',
tblName: 'lst_metro',
listWidth: 250,
forceSelection: false,
comboParam: 'fc_metro',
comboValueField: 'id',
comboResponseField: 'name',
comboDisplayField: 'name',
triggerAction: 'all',
emptyText: 'Метро',
selectOnFocus: false,
displayField: 'name',
valueField: 'id',
anchor: '95%'
}, {
//xtype: 'LSTCombo',
xtype: 'ASCombo',
id: 'delivery_place',
name: 'delivery_place',
fieldLabel: 'Пункт самовывоза',
comboParam: 'fc_delivery_place',
comboValueField: 'id',
comboResponseField: 'address',
comboDisplayField: 'address',
width: 250,
listWidth: 250,
tblName: 'lst_delivery_place',
forceSelection: false,
conditions: Ext.encode([['del', ' = ', '0']]),
order: ' address',
triggerAction: 'all',
emptyText: 'Пункт самовывоза',
selectOnFocus: false,
displayField: 'address',
valueField: 'id',
anchor: '95%',
listeners: {
blur: function(){
//this.changed = true;
//alert(Number(Ext.getCmp('delivery_city').getValue()));
if (Number(Ext.getCmp('delivery_city').getValue()))
this.conditions = Ext.encode([['del', ' = ', '0'], ['city_id', ' = ', Number(Ext.getCmp('delivery_city').getValue())]]);
//this.store.reload();
//alert('ok');
//Ext.getCmp('delivery_place').conditions = Ext.encode([['del',' = ', '0'],['city_id', ' = ', newValue]]);
}
}
}, {
xtype: 'textfield',
fieldLabel: 'Индекс',
id: 'delivery_index',
name: 'delivery_index',
anchor: '95%'
}, {
xtype: 'textfield',
fieldLabel: 'Улица',
id: 'delivery_address',
name: 'delivery_address',
anchor: '95%'
}, {
layout: 'column',
border: false,
items: [{
columnWidth: .10,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: 'дом.',
width: 50
}]
}, {
columnWidth: .23,
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'дом.',
hideLabel: true,
labelSeparator: '',
id: 'delivery_building',
name: 'delivery_building',
width: 60
}]
}, {
columnWidth: .1,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: 'кор.',
width: 50
}]
}, {
columnWidth: .24,
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'кор.',
labelSeparator: '',
hideLabel: true,
labelStyle: 'padding-left: 10px; width: 40px;',
style: 'width: 40px;',
id: 'delivery_building_1',
name: 'delivery_building_1',
width: 60
}]
}, {
columnWidth: .1,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: 'кв.',
width: 40
}]
}, {
columnWidth: .23,
layout: 'form',
border: false,
items: [{
xtype: 'numberfield',
fieldLabel: 'кв.',
labelSeparator: '',
hideLabel: true,
labelStyle: 'padding-left: 10px; width: 40px;',
style: 'width: 40px;',
id: 'delivery_flat',
name: 'delivery_flat',
width: 50
}]
}]
}]
}, {
columnWidth: .3,
border: false,
layout: 'form',
bodyStyle: 'padding: 5 5 0 10',
items: [{
html: '<center><b><u>Общие данные</u></b></center>',
border: false
}, {
xtype: 'textfield',
fieldLabel: 'Статус заказа',
id: 'status_bo',
name: 'status_bo',
anchor: '95%'
}, {
xtype: 'numberfield',
fieldLabel: 'Стоимость доставки',
id: 'delivery_cost',
name: 'delivery_cost',
anchor: '95%',
listeners: {
change: function(field, newValue, oldValue){
//alert(Number(Ext.getCmp('all_cost').getValue())-Number(oldValue)+Number(newValue));
Ext.getCmp('all_cost').setValue(Number(Ext.getCmp('all_cost').getValue()) - Number(oldValue) + Number(newValue));
}
}
}, {
xtype: 'textfield',
fieldLabel: 'Итого',
id: 'all_cost',
disabled: true,
name: 'all_cost',
anchor: '95%'
}, {
html: '<center><b>Информация об оплате</b></center>',
border: false
}, {
xtype: 'PaymentGrid',
id: 'payment-grid',
height: 150,
width: 300
}, /*{
xtype: 'LSTCombo',
id: 'payment_type',
name: 'payment_type',
fieldLabel: 'Способ оплаты',
tblName: 'lst_payment_types',
forceSelection: true,
listWidth: 150,
triggerAction: 'all',
emptyText: 'Способ оплаты',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%'
},*/
{
xtype: 'datefield',
format: 'd.m.Y',
renderer: Ext.util.Format.dateRenderer('d.m.Y'),
fieldLabel: 'Дата оплаты',
name: 'date_paid',
id: 'date_paid',
anchor: '95%'
}]
}]
}]
}],
buttons: [{
text: 'Пересчитать скидку',
handler: function(){
var orderId = Ext.getCmp('id').getValue();
if (!Ext.getCmp('orderdiscount-window')) {
var win = new nsMain.OrderDiscountWindow({
id: 'orderdiscount-window'
});
win.show();
Ext.getCmp('orderdiscount-order-id').setValue(id);
}
} //function handler
}, {
text: 'Сохранить изменения',
handler: function(){
//
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Сохранить изменения?', function(btn){
if (btn == 'yes') {
Ext.getCmp('order-form').dataSave(false);
}
})
} //function handler
}, {
text: 'Оформить заказ',
handler: function(){
//проверить наличие всех товаров на складе
var gridId = 'order-items-grid';
var records = Ext.getCmp(gridId).store.getRange();
var flag = false;
Ext.each(records, function(r, i){
if (r.get('quantity') > r.get('cnt') && r.get('e_book') == 0) {
flag = true;
};
}, this);
//проверить чтобы был оплачен безнал
var gridId = 'payment-grid';
var records = Ext.getCmp(gridId).store.getRange();
var flag_pay = true;
Ext.each(records, function(r, i){
if (!r.get('date_paid') &&
(r.get('payment_type') == 2 || r.get('payment_type') == 3 || r.get('payment_type') == 4 ||
r.get('payment_type') == 5 ||
r.get('payment_type') == 6 ||
r.get('payment_type') == 7 ||
r.get('payment_type') == 8 ||
r.get('payment_type') == 10)) {
flag_pay = false;
};
}, this);
//alert(flag_pay);
//alert(Number(Ext.getCmp('payment_cost').getValue()));
if (flag) {
Ext.MessageBox.show({
msg: "Нехватка товара на скаладе! Оформить заказ нельзя!"
});
}
else
{ if (!flag_pay) {
Ext.MessageBox.show({
msg: "Заказ не оплачен!"
});
}
else
{
if (Number(Ext.getCmp('all_cost').getValue()) != Number(Ext.getCmp('paymentgrid_cost').getValue()))
{
if (Number(Ext.getCmp('all_cost').getValue()) < Number(Ext.getCmp('paymentgrid_cost').getValue()))
{
var order_id = Ext.getCmp('id').getValue();
//пересчет сумм
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'return_money_for_order',
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
if (success) {
responseObj = Ext.util.JSON.decode(response.responseText);
//alert(responseObj.success);
if (responseObj.success)
{
Ext.MessageBox.show({
msg: "Была пересчитана сумма к оплате"
});
//оформление заказов
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Оформить заказ?', function(btn){
if (btn == 'yes') {
Ext.getCmp('order-form').dataSave(7);
}
});
}
else
{
Ext.MessageBox.show({
msg: "Не удалось пересчитать сумму к оплате у заказа"
});
}
}
else
{
Ext.MessageBox.show({
msg: "Ошибка в работе сервера"
});
}
}
}; //o
Ext.Ajax.request(o);
}
else
{
Ext.MessageBox.show({
msg: "Не cовпадает сумма оплаты и сумма заказа"
});
}
}
else {
//оформление заказов
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Оформить заказ?', function(btn){
if (btn == 'yes') {
Ext.getCmp('order-form').dataSave(7);
}
})
}
}
}
} //function handler
}, {
text: 'Отложить',
handler: function(){
//Открыть окно для выбора причины
var orderId = Ext.getCmp('id').getValue();
//alert('откладывание заказа '+orderId);
if (!Ext.getCmp('orderwait-window')) {
var win = new nsMain.OrderWaitWindow({
id: 'orderwait-window'
});
win.show();
Ext.getCmp('wait-order-id').setValue(id);
}
} //function handler
}, {
text: 'Аннулировать',
handler: function(){
var date_paid = Ext.getCmp('date_paid').getValue();
//alert(date_paid);
if (date_paid) {
Ext.MessageBox.show({
msg: "Заказ оплачен! Аннулировать нельзя!"
});
}
else {
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Аннулировать?', function(btn){
if (btn == 'yes') {
var id = Ext.getCmp('id').getValue();
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'annul_order',
tblName: 'tbl_order',
values: Ext.encode({
'status_bo': 6
}),
condition: Ext.encode({
'id': id
})
}, //params
callback: function(options, success, response){
if (success) {
Ext.MessageBox.show({
msg: "Заказ аннулированн"
});
}
responseObj = Ext.util.JSON.decode(response.responseText);
if (responseObj.data[0].comment)
{
Ext.getCmp('ordercreate-comment').setValue(responseObj.data[0].comment);
}
if (responseObj.message) {
Ext.MessageBox.show({
msg: responseObj.message
});
}
}
}; //o
if (id) {
Ext.Ajax.request(o);
}
}
});
}
}
}] //buttons
}); //Ext.apply
nsMain.OrderForm.superclass.initComponent.apply(this, arguments);
}, // eo function initComponent
onRender: function(){
nsMain.OrderForm.superclass.onRender.apply(this, arguments);
}, // eo function onRender
dataLoad: function(orderId){
//alert(orderId);
Ext.getCmp('ordercreate-comment').setValue('');
Ext.getCmp('ordercreate-comment_cs').setValue('');
Ext.getCmp('ordercreate-comment_st').setValue('');
this.getForm().load({
url: '/office/server/callcenter/server.php',
method: 'POST',
params: {
action: 'orderForm',
id: orderId
},
success: function(form, response){
Ext.getCmp('order-items-grid').dataLoad(orderId);
Ext.getCmp('payment-grid').dataLoad(orderId);
Ext.getCmp('text_label').setText('№ заказа - ' + response.result.data.order_number +
' Код скидки: ' +
response.result.data.code +
' Скидка клиента: ' +
((response.result.data.customer_discount) ? (response.result.data.customer_discount * 100 + '%') : ('0%')) +
' RМ: ' +
((response.result.data.rm_account) ? (response.result.data.rm_account) : ('0'))+
' Скидка заказа: '+
((response.result.data.discount) ? (response.result.data.discount * 100 + '%') : ('0%')));
//alert(response.result.data.delivery_city_id);
Ext.getCmp('ordercreate-commentorder_id').setValue(response.result.data.id);
Ext.getCmp('ordercreate-comment').setValue(response.result.data.order_comment);
Ext.getCmp('ordercreate-comment_cs').setValue(response.result.data.comment_cs);
Ext.getCmp('ordercreate-comment_st').setValue(response.result.data.comment_st);
if (response.result.data.delivery_city_id) {
Ext.getCmp('delivery_place').conditions = Ext.encode([['del', ' = ', '0'], ['city_id', ' = ', response.result.data.delivery_city_id]]);
}
else {
Ext.getCmp('delivery_place').conditions = Ext.encode([['del', ' = ', '0']]);
}
Ext.getCmp('order-form').delivery_type_cnt = response.result.data.delivery_type_cnt;
Ext.getCmp('order-form').old_delivery_type = response.result.data.delivery_type_id;
Ext.getCmp('order-form').old_delivery_type_name = response.result.data.delivery_type;
Ext.getCmp('order-form').old_delivery_city = response.result.data.delivery_city_id;
Ext.getCmp('order-form').old_delivery_country = response.result.data.delivery_country_id;
Ext.getCmp('order-form').delivery_place = response.result.data.delivery_place_id;
Ext.getCmp('main-viewport').render();
}
});
},
getDeliveryCost: function(orderId){
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
params: {
action: 'getDeliveryCost',
id: orderId
},
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
if (responseObj.id) {
responseObj = Ext.util.JSON.decode(response.responseText);
}
}
};
Ext.Ajax.request(o);
},
dataSave: function(status){
//о клиенте
var customer_id = Ext.getCmp('customer_id').getValue();
var s = {};
s.firstname = Ext.getCmp('firstname').getValue();
s.middlename = Ext.getCmp('middlename').getValue();
s.lastname = Ext.getCmp('lastname').getValue();
s.phone = Ext.getCmp('phone').getValue();
s.email = Ext.getCmp('email').getValue();
var birthdate = Ext.getCmp('birthdate').getValue();
if (birthdate)
s.birthdate = birthdate;
//organization
var org = {};
var orgid = Ext.getCmp('organization_data_id').getValue();
org.name = Ext.getCmp('name').getValue();
org.kpp = Ext.getCmp('kpp').getValue();
org.inn = Ext.getCmp('inn').getValue();
org.r_s = Ext.getCmp('r_s').getValue();
org.address = Ext.getCmp('address').getValue();
org.bank = Ext.getCmp('bank').getValue();
org.kor_s = Ext.getCmp('kor_s').getValue();
org.bik = Ext.getCmp('bik').getValue();
if (org.name && org.kpp && org.r_s && org.bank && org.kor_s && org.bik && org.address) {
var action = 'update';
if (!orgid) {
action = 'new';
}
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
params: {
action: action,
tblName: 'tbl_organization_data',
values: Ext.encode(org),
condition: Ext.encode({
'id': orgid
})
//,saveValue: Ext.encode(s)
}, //params
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
if (responseObj.id) {
Ext.getCmp('organization_data_id').setValue(responseObj.id);
Ext.MessageBox.show({
msg: 'Cоздана организация с id: ' + responseObj.id
});
s.organization_data_id = responseObj.id;
s.is_organization = 'true';
var clientdata = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_customer',
values: Ext.encode(s),
condition: Ext.encode({
'id': customer_id
})
}, //params
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
}
};
Ext.Ajax.request(clientdata);
}
//save client data
}
};
Ext.Ajax.request(o);
}
else {
var clientdata = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_customer',
values: Ext.encode(s),
condition: Ext.encode({
'id': customer_id
})
}, //params
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
}
};
Ext.Ajax.request(clientdata);
}
//save data to tbl_order
var d = {};
if (status) {
d.status_bo = status;
}
var order_id = Ext.getCmp('id').getValue();
//var payment_type = Number(Ext.getCmp('payment_type').getValue());
var date_paid = Ext.getCmp('date_paid').getValue();
var delivery_cost = Number(Ext.getCmp('delivery_cost').getValue());
if (date_paid)
d.date_paid = date_paid;
//if (payment_type) d.payment_type = payment_type;
if (delivery_cost || delivery_cost == 0)
d.delivery_cost = delivery_cost;
//доставка // Пересчет!!!!!
f = {};
var form_id = Ext.getCmp('order-form');
var action = 'update';
var delivery_type = Number(Ext.getCmp('delivery_type').getValue());
var delivery_place = Number(Ext.getCmp('delivery_place').getValue());
var delivery_city = (Ext.getCmp('delivery_city').getRawValue()) ? Number(Ext.getCmp('delivery_city').getValue()): '';
var delivery_country = Number(Ext.getCmp('delivery_country').getValue());
// for comment, change delivery type
var com_del_type = {};
tmp_delivery_type = delivery_type;
if (!delivery_type && Ext.getCmp('delivery_type').getRawValue()) {
tmp_delivery_type = form_id.old_delivery_type;
}
if (Number(form_id.old_delivery_type) != Number(tmp_delivery_type)) {
com_del_type.comment = 'изменение способа доставки с ' + form_id.old_delivery_type_name + ' на ' + Ext.getCmp('delivery_type').getRawValue();
}
//-----
var delivery_id = Ext.getCmp('delivery_id').getValue();
var delivery_index = Ext.getCmp('delivery_index').getValue();
var delivery_address = Ext.getCmp('delivery_address').getValue();
var delivery_building = Ext.getCmp('delivery_building').getValue();
//var comment = Ext.getCmp('comment').getValue();
var delivery_building_1 = Ext.getCmp('delivery_building_1').getValue();
var delivery_flat = Ext.getCmp('delivery_flat').getValue();
var delivery_date = Ext.getCmp('delivery_date').getValue();
var delivery_time_min = Number(Ext.getCmp('delivery_time_min').getValue());
var delivery_time_max = Number(Ext.getCmp('delivery_time_max').getValue());
if (delivery_date) {
f.delivery_date = delivery_date;
}
else {
f.delivery_date = 'NULL';
}
if (delivery_place) {
f.delivery_place = delivery_place;
}
else if (!Ext.getCmp('delivery_place').getRawValue())
{
f.delivery_place = 'NULL';
}
if (delivery_country) {
f.delivery_country = delivery_country;
}
else {
if (action == 'new' && form_id.old_delivery_country) {
f.delivery_country = form_id.old_delivery_country
}
}
if (delivery_type) {
f.delivery_type = delivery_type;
}
else {
if (action == 'new') {
f.delivery_type = form_id.old_delivery_type
}
}
if (delivery_city) {
f.delivery_city = delivery_city;
}
else {
//alert(Ext.getCmp('delivery_city').getRawValue());
if (!Ext.getCmp('delivery_city').getRawValue())
{
f.delivery_city = 'NULL';
}
if (action == 'new' && form_id.old_delivery_city) {
f.delivery_city = form_id.old_delivery_city
}
}
f.delivery_index = delivery_index;
f.delivery_address = delivery_address;
//f.delivery_comment = comment;
f.delivery_building = delivery_building;
f.delivery_building_1 = delivery_building_1;
f.delivery_flat = (delivery_flat) ? delivery_flat : 'NULL';
f.delivery_time_max = (delivery_time_max) ? delivery_time_max : 'NULL';
f.delivery_time_min = (delivery_time_min) ? delivery_time_min : 'NULL';
var delivery_metro = Number(Ext.getCmp('delivery_metro').getValue());
f.delivery_metro = (delivery_metro) ? delivery_metro : 'NULL';
/*
if (Ext.getCmp('delivery_metro').getRawValue())
{
var delivery_metro = Number(Ext.getCmp('delivery_metro').getValue());
if (delivery_metro) { f.delivery_metro = delivery_metro;}
}
else
{
if (action == 'update') f.delivery_metro = 'NULL';
}
*/
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: action,
tblName: 'tbl_order_delivery',
values: Ext.encode(f),
condition: Ext.encode({
'id': delivery_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
var y = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_order',
values: Ext.encode(d),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
//alert(responseObj.success);
if (! responseObj.success)
{
Ext.MessageBox.show({
msg: responseObj.message
});
}
if (success && f.delivery_type && responseObj.success) {
form_id.old_delivery_type = f.delivery_type;
form_id.old_delivery_type_name = Ext.getCmp('delivery_type').getRawValue();
}
if (success && com_del_type.comment && responseObj.success) {
var om = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'addcomment',
tblName: 'tbl_order',
autocom: 1,
values: Ext.encode(com_del_type),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success) {
Ext.getCmp('ordercreate-comment').setValue(responseObj.data[0].comment);
}
}
};
Ext.Ajax.request(om);
}
if (success && status && responseObj.success) {
Ext.MessageBox.show({
msg: 'Заказ оформлен'
});
Ext.Ajax.request({
url: '/office/server/callcenter/server.php',
method: 'POST',
params: {
action: 'delete',
tblName: 'tbl_order_reserve',
condition: Ext.encode({
'order_id': order_id
})
}
});
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'addcomment',
tblName: 'tbl_order',
autocom: 1,
values: Ext.encode({
'comment': ' оформил '
}),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success) {
Ext.getCmp('ordercreate-comment').setValue(responseObj.data[0].comment);
}
}
};
Ext.Ajax.request(o);
var add_data_for_comment = '';
del_type = (f.delivery_type) ? Number(f.delivery_type) : Number(form_id.old_delivery_type);
var del_city = (delivery_city)? delivery_city : form_id.old_delivery_city;
var del_place = (delivery_place)? delivery_place : form_id.delivery_place;
var exp_courier = '';
switch (del_type) {
case 2:
exp_courier = " экспресс ";
case 1:
var del_date = delivery_date.getDate() + '.' + (delivery_date.getMonth() + 1) + '.' + delivery_date.getFullYear();
add_data_for_comment = 'К ' +exp_courier+ del_date + ' с ' + ((delivery_time_min) ? delivery_time_min : '9') + ' по ' + ((delivery_time_max) ? delivery_time_max : '22');
//alert(add_data_for_comment);
break;
case 3:
if (del_place == 346) {
add_data_for_comment = ' C Вятская';
}
else
if (del_city == 1) {
add_data_for_comment = 'С Москва';
}
else
if (del_city == 2) {
add_data_for_comment = 'С Питер';
}
else {
add_data_for_comment = 'С Регионы';
}
break;
case 7:
case 8:
add_data_for_comment = 'П';
break;
default:
add_data_for_comment = Ext.getCmp('delivery_type').getRawValue();
break;
}
var a = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'addcomment',
autocom: 1,
firstrow: 1,
tblName: 'tbl_order',
values: Ext.encode({
'comment_st': add_data_for_comment
}),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success) {
Ext.getCmp('ordercreate-comment_st').setValue(responseObj.data[0].comment_st);
}
}
};
Ext.Ajax.request(a);
}
}
};
Ext.Ajax.request(y);
Ext.getCmp('order-items-grid').dataSave();
//Ext.getCmp('payment-grid').dataSave();
}
};
function alert_obj(obj) {
var txt = '';
for (var i in obj) {
txt += i + "---" + obj[i] + "\n";
}
alert(txt);
}
var payment_check = false;
del_type = (f.delivery_type) ? Number(f.delivery_type) : Number(form_id.old_delivery_type);
if (del_type != 8)
{
var records = Ext.getCmp('payment-grid').store.getRange();
Ext.each(records, function(r, i) {
if (r.modified)
{
var o = r.getChanges();
pay = o['name'];
}
else
{
pay = r.get('payment_type');
}
if(pay == 9) payment_check = true;
});
}
Ext.getCmp('payment-grid').dataSave();
Ext.getCmp('order-items-grid').dataSave();
if (payment_check)
{
Ext.MessageBox.show({
msg: 'Неверные способы оплаты у заказа'
});
return;
}
Ext.Ajax.request(o);
}
});
Ext.reg('OrderForm', nsMain.OrderForm);
var week_days = ['', 'понедельникам','вторниками','средам','четвергам','пятницам','субботам','воскресеньям'];
nsMain.OrderForm = Ext.extend(Ext.form.FormPanel, {
initComponent: function(){
var old_delivery_type;
var old_delivery_city;
var old_delivery_country;
var old_delivery_metro;
Ext.apply(this, {
url: '/office/server/callcenter/server.php',
frame: false,
old_delivery_type: '',
border: false,
autoScroll: true,
buttonAlign: 'center',
items: [{
layout: 'form',
border: false,
bodyStyle: 'padding: 0 0 0 10',
items: [{
xtype: 'label',
name: 'text_label',
id: 'text_label',
text: 'Номер заказа',
height: 40
}, {
xtype: 'textfield',
name: 'id',
id: 'id',
fieldLabel: 'ID заказа',
hideLabel: true,
hidden: true
}, {
xtype: 'textfield',
name: 'order_number',
disabled: true,
hideLabel: true,
hidden: true,
id: 'order_number',
fieldLabel: 'Номер заказа'
}, {
xtype: 'OrderItemsGrid',
id: 'order-items-grid',
height: 150
}, {
layout: 'column',
border: false,
items: [{
columnWidth: .4,
border: false,
layout: 'form',
bodyStyle: 'padding: 5 5 0 10',
items: [{
xtype: 'OrderCommentTab',
Comment: 'ordercreate-comment',
width: 400,
Comment_CS: 'ordercreate-comment_cs',
Comment_ST: 'ordercreate-comment_st',
id: 'orderdatacomment-tab'
}, {
xtype: 'CustomerDataTab',
width: 400,
nameid: '',
id: 'customerdata-tab'
}]
}, {
columnWidth: .3,
border: false,
layout: 'form',
bodyStyle: 'padding: 5 5 0 10',
items: [{
xtype: 'textfield',
disabled: true,
id: 'code',
name: 'code',
hideLabel: true,
hidden: true,
fieldLabel: 'Код скидки',
anchor: '95%'
}, {
xtype: 'textfield',
id: 'discount',
disabled: true,
hideLabel: true,
hidden: true,
name: 'discount',
fieldLabel: 'Скидка',
anchor: '95%'
}, {
html: '<center><b>Информация доставке</b></center>',
border: false
}, {
xtype: 'textfield',
name: 'delivery_id',
id: 'delivery_id',
hideLabel: true,
hidden: true,
anchor: '95%'
}, {
xtype: 'LSTCombo',
id: 'delivery_type',
name: 'delivery_type',
fieldLabel: 'Способ доставки',
tblName: 'lst_delivery_types',
order: 'name',
forceSelection: true,
listWidth: 150,
triggerAction: 'all',
emptyText: 'Способ доставки',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%'
}, {
xtype: 'datefield',
fieldLabel: 'Дата доставки',
renderer: Ext.util.Format.dateRenderer('d.m.Y'),
format: 'd.m.Y',
name: 'delivery_date',
id: 'delivery_date',
anchor: '95%'
}, {
layout: 'column',
border: false,
items: [{
columnWidth: .45,
layout: 'form',
border: false,
items: [{
xtype: 'numberfield',
name: 'delivery_time_min',
id: 'delivery_time_min',
fieldLabel: 'Время доствки с ',
labelSeparator: '',
anchor: '90%'
}]
}, {
columnWidth: .10,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: ' до '
//width: 50
}]
}, {
columnWidth: .45,
layout: 'form',
border: false,
items: [{
xtype: 'numberfield',
name: 'delivery_time_max',
id: 'delivery_time_max',
hideLabel: true,
labelSeparator: '',
anchor: '90%'
}]
}]
}, {
xtype: 'ASCombo',
id: 'delivery_country',
name: 'delivery_country',
fieldLabel: 'Страна',
listWidth: 250,
tblName: 'lst_country',
forceSelection: true,
triggerAction: 'all',
comboParam: 'fc_country',
comboValueField: 'id',
comboResponseField: 'name',
comboDisplayField: 'name',
emptyText: 'Страна',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%'
}, {
xtype: 'ASCombo',
id: 'delivery_city',
name: 'delivery_city',
fieldLabel: 'Город',
tblName: 'lst_city',
forceSelection: false,
comboParam: 'fc_city',
listWidth: 250,
comboValueField: 'id',
comboResponseField: 'name',
comboDisplayField: 'name',
triggerAction: 'all',
emptyText: 'Город',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%',
listeners: {
select: function(combo, record, index){
//this.changed = true;
//alert(record.get('id'));
Ext.getCmp('delivery_place').conditions = Ext.encode([['del', ' = ', '0'], ['city_id', ' = ', record.get('id')]]);
}
}
}, {
xtype: 'ASCombo',
id: 'delivery_metro',
name: 'delivery_metro',
fieldLabel: 'Метро',
tblName: 'lst_metro',
listWidth: 250,
forceSelection: false,
comboParam: 'fc_metro',
comboValueField: 'id',
comboResponseField: 'name',
comboDisplayField: 'name',
triggerAction: 'all',
emptyText: 'Метро',
selectOnFocus: false,
displayField: 'name',
valueField: 'id',
anchor: '95%'
}, {
//xtype: 'LSTCombo',
xtype: 'ASCombo',
id: 'delivery_place',
name: 'delivery_place',
fieldLabel: 'Пункт самовывоза',
comboParam: 'fc_delivery_place',
comboValueField: 'id',
comboResponseField: 'address',
comboDisplayField: 'address',
width: 250,
listWidth: 250,
tblName: 'lst_delivery_place',
forceSelection: false,
conditions: Ext.encode([['del', ' = ', '0']]),
order: ' address',
triggerAction: 'all',
emptyText: 'Пункт самовывоза',
selectOnFocus: false,
displayField: 'address',
valueField: 'id',
anchor: '95%',
listeners: {
blur: function(){
//this.changed = true;
//alert(Number(Ext.getCmp('delivery_city').getValue()));
if (Number(Ext.getCmp('delivery_city').getValue()))
this.conditions = Ext.encode([['del', ' = ', '0'], ['city_id', ' = ', Number(Ext.getCmp('delivery_city').getValue())]]);
//this.store.reload();
//alert('ok');
//Ext.getCmp('delivery_place').conditions = Ext.encode([['del',' = ', '0'],['city_id', ' = ', newValue]]);
}
}
}, {
xtype: 'textfield',
fieldLabel: 'Индекс',
id: 'delivery_index',
name: 'delivery_index',
anchor: '95%'
}, {
xtype: 'textfield',
fieldLabel: 'Улица',
id: 'delivery_address',
name: 'delivery_address',
anchor: '95%'
}, {
layout: 'column',
border: false,
items: [{
columnWidth: .10,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: 'дом.',
width: 50
}]
}, {
columnWidth: .23,
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'дом.',
hideLabel: true,
labelSeparator: '',
id: 'delivery_building',
name: 'delivery_building',
width: 60
}]
}, {
columnWidth: .1,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: 'кор.',
width: 50
}]
}, {
columnWidth: .24,
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'кор.',
labelSeparator: '',
hideLabel: true,
labelStyle: 'padding-left: 10px; width: 40px;',
style: 'width: 40px;',
id: 'delivery_building_1',
name: 'delivery_building_1',
width: 60
}]
}, {
columnWidth: .1,
layout: 'form',
border: false,
items: [{
xtype: 'label',
text: 'кв.',
width: 40
}]
}, {
columnWidth: .23,
layout: 'form',
border: false,
items: [{
xtype: 'numberfield',
fieldLabel: 'кв.',
labelSeparator: '',
hideLabel: true,
labelStyle: 'padding-left: 10px; width: 40px;',
style: 'width: 40px;',
id: 'delivery_flat',
name: 'delivery_flat',
width: 50
}]
}]
}, {
layout: 'column',
border: false,
items: [{
columnWidth: 1,
layout: 'form',
border: false,
bodyStyle: 'text-align: center;',
items: [{
border: false,
buttons: [{
text: 'Обновить информацию о доставке',
handler: function(){
var order_id = Ext.getCmp('id').getValue();
// Сохранить все, что сейчас есть
//Ext.getCmp('order-form').dataSave(false,true);
Ext.getCmp('order-form').deliverySave();
} //function handler
}]
}]
}]
}]
}, {
columnWidth: .3,
border: false,
layout: 'form',
bodyStyle: 'padding: 5 5 0 10',
items: [{
html: '<center><b><u>Общие данные</u></b></center>',
border: false
}, {
xtype: 'textfield',
fieldLabel: 'Статус заказа',
id: 'status_bo',
name: 'status_bo',
anchor: '95%'
}, {
xtype: 'numberfield',
fieldLabel: 'Стоимость доставки',
id: 'delivery_cost',
name: 'delivery_cost',
anchor: '95%',
listeners: {
change: function(field, newValue, oldValue){
//alert(Number(Ext.getCmp('all_cost').getValue())-Number(oldValue)+Number(newValue));
Ext.getCmp('all_cost').setValue(Number(Ext.getCmp('all_cost').getValue()) - Number(oldValue) + Number(newValue));
}
}
}, {
xtype: 'textfield',
fieldLabel: 'Итого',
id: 'all_cost',
disabled: true,
name: 'all_cost',
anchor: '95%'
}, {
html: '<center><b>Информация об оплате</b></center>',
border: false
}, {
xtype: 'PaymentGrid',
id: 'payment-grid',
height: 150,
width: 300
}, /*{
xtype: 'LSTCombo',
id: 'payment_type',
name: 'payment_type',
fieldLabel: 'Способ оплаты',
tblName: 'lst_payment_types',
forceSelection: true,
listWidth: 150,
triggerAction: 'all',
emptyText: 'Способ оплаты',
selectOnFocus: true,
displayField: 'name',
valueField: 'id',
anchor: '95%'
},*/
{
xtype: 'datefield',
format: 'd.m.Y',
renderer: Ext.util.Format.dateRenderer('d.m.Y'),
fieldLabel: 'Дата оплаты',
name: 'date_paid',
id: 'date_paid',
anchor: '95%'
}]
}]
}]
}],
buttons: [{
text: 'Пересчитать скидку',
handler: function(){
var orderId = Ext.getCmp('id').getValue();
if (!Ext.getCmp('orderdiscount-window')) {
var win = new nsMain.OrderDiscountWindow({
id: 'orderdiscount-window'
});
win.show();
Ext.getCmp('orderdiscount-order-id').setValue(id);
}
} //function handler
}, {
text: 'Сохранить изменения',
handler: function(){
//
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Сохранить изменения?', function(btn){
if (btn == 'yes') {
Ext.getCmp('order-form').dataSave(false,false);
}
})
} //function handler
}, {
text: 'Оформить заказ',
handler: function(){
/*
// Сохранить все, что сейчас есть (с пересчётом)
var order_id = Ext.getCmp('id').getValue();
Ext.getCmp('order-form').dataSave(false,true);
*/
//проверить наличие всех товаров на складе
var gridId = 'order-items-grid';
var records = Ext.getCmp(gridId).store.getRange();
var flag = false;
Ext.each(records, function(r, i){
if (r.get('quantity') > r.get('cnt') && r.get('e_book') == 0) {
flag = true;
};
}, this);
//проверить чтобы был оплачен безнал
var gridId = 'payment-grid';
var records = Ext.getCmp(gridId).store.getRange();
var flag_pay = true;
Ext.each(records, function(r, i){
if (!r.get('date_paid') &&
(r.get('payment_type') == 2 || r.get('payment_type') == 3 || r.get('payment_type') == 4 ||
r.get('payment_type') == 5 ||
r.get('payment_type') == 6 ||
r.get('payment_type') == 7 ||
r.get('payment_type') == 8 ||
r.get('payment_type') == 10)) {
flag_pay = false;
};
}, this);
//alert(flag_pay);
//alert(Number(Ext.getCmp('payment_cost').getValue()));
if (flag) {
Ext.MessageBox.show({
msg: "Нехватка товара на скаладе! Оформить заказ нельзя!"
});
}
else
{ if (!flag_pay) {
Ext.MessageBox.show({
msg: "Заказ не оплачен!"
});
}
else
{
/*alert(Ext.getCmp('delivery_city').getRawValue()+' '+Ext.getCmp('delivery_metro').getRawValue()
+' '+Ext.getCmp('delivery_metro').getValue());
*/
// if (Ext.getCmp('delivery_city').getRawValue() == 'Москва' && (Ext.getCmp('delivery_metro').getRawValue() =='' || !Ext.getCmp('delivery_metro').getValue()))
// {
// Ext.MessageBox.show({
// msg: "Укажите метро!"
// });
// }
// else
// {
if (Number(Ext.getCmp('all_cost').getValue()) != Number(Ext.getCmp('paymentgrid_cost').getValue()))
{
if (Number(Ext.getCmp('all_cost').getValue()) < Number(Ext.getCmp('paymentgrid_cost').getValue()))
{
var order_id = Ext.getCmp('id').getValue();
//пересчет сумм
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'return_money_for_order',
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
if (success) {
responseObj = Ext.util.JSON.decode(response.responseText);
//alert(responseObj.success);
if (responseObj.success)
{
Ext.MessageBox.show({
msg: "Была пересчитана сумма к оплате"
});
//оформление заказов
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Оформить заказ?', function(btn){
if (btn == 'yes') {
Ext.getCmp('order-form').deliverySave(7);
}
});
}
else
{
Ext.MessageBox.show({
msg: "Не удалось пересчитать сумму к оплате у заказа"
});
}
}
else
{
Ext.MessageBox.show({
msg: "Ошибка в работе сервера"
});
}
}
}; //o
Ext.Ajax.request(o);
}
else
{
Ext.MessageBox.show({
msg: "Не cовпадает сумма оплаты и сумма заказа"
});
}
}
else {
//оформление заказов
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Оформить заказ?', function(btn){
if (btn == 'yes') {
Ext.getCmp('order-form').deliverySave(7);
}
})
}
//}
}
}
} //function handler
}, {
text: 'Отложить',
handler: function(){
//Открыть окно для выбора причины
var orderId = Ext.getCmp('id').getValue();
//alert('откладывание заказа '+orderId);
if (!Ext.getCmp('orderwait-window')) {
var win = new nsMain.OrderWaitWindow({
id: 'orderwait-window'
});
win.show();
Ext.getCmp('wait-order-id').setValue(id);
}
} //function handler
}, {
text: 'Аннулировать',
handler: function(){
var date_paid = Ext.getCmp('date_paid').getValue();
//alert(date_paid);
if (date_paid) {
Ext.MessageBox.show({
msg: "Заказ оплачен! Аннулировать нельзя!"
});
}
else {
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Аннулировать?', function(btn){
if (btn == 'yes') {
var id = Ext.getCmp('id').getValue();
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'annul_order',
tblName: 'tbl_order',
values: Ext.encode({
'status_bo': 6
}),
condition: Ext.encode({
'id': id
})
}, //params
callback: function(options, success, response){
if (success) {
Ext.MessageBox.show({
msg: "Заказ аннулированн"
});
}
responseObj = Ext.util.JSON.decode(response.responseText);
if (responseObj.data[0].comment)
{
Ext.getCmp('ordercreate-comment').setValue(responseObj.data[0].comment);
}
if (responseObj.message) {
Ext.MessageBox.show({
msg: responseObj.message
});
}
}
}; //o
if (id) {
Ext.Ajax.request(o);
}
}
});
}
}
}] //buttons
}); //Ext.apply
nsMain.OrderForm.superclass.initComponent.apply(this, arguments);
}, // eo function initComponent
onRender: function(){
nsMain.OrderForm.superclass.onRender.apply(this, arguments);
}, // eo function onRender
dataLoad: function(orderId){
//alert(orderId);
Ext.getCmp('ordercreate-comment').setValue('');
Ext.getCmp('ordercreate-comment_cs').setValue('');
Ext.getCmp('ordercreate-comment_st').setValue('');
this.getForm().load({
url: '/office/server/callcenter/server.php',
method: 'POST',
params: {
action: 'orderForm',
id: orderId
},
success: function(form, response){
Ext.getCmp('order-items-grid').dataLoad(orderId);
Ext.getCmp('payment-grid').dataLoad(orderId);
Ext.getCmp('text_label').setText('№ заказа - ' + response.result.data.order_number +
' Код скидки: ' +
response.result.data.code +
' Скидка клиента: ' +
((response.result.data.customer_discount) ? (response.result.data.customer_discount * 100 + '%') : ('0%')) +
' RМ: ' +
((response.result.data.rm_account) ? (response.result.data.rm_account) : ('0'))+
' Скидка заказа: '+
((response.result.data.discount) ? (response.result.data.discount * 100 + '%') : ('0%')));
//alert(response.result.data.delivery_city_id);
Ext.getCmp('ordercreate-commentorder_id').setValue(response.result.data.id);
Ext.getCmp('ordercreate-comment').setValue(response.result.data.order_comment);
Ext.getCmp('ordercreate-comment_cs').setValue(response.result.data.comment_cs);
Ext.getCmp('ordercreate-comment_st').setValue(response.result.data.comment_st);
if (response.result.data.delivery_city_id) {
Ext.getCmp('delivery_place').conditions = Ext.encode([['del', ' = ', '0'], ['city_id', ' = ', response.result.data.delivery_city_id]]);
}
else {
Ext.getCmp('delivery_place').conditions = Ext.encode([['del', ' = ', '0']]);
}
Ext.getCmp('order-form').delivery_type_cnt = response.result.data.delivery_type_cnt;
Ext.getCmp('order-form').old_delivery_type = response.result.data.delivery_type_id;
Ext.getCmp('order-form').old_delivery_type_name = response.result.data.delivery_type;
Ext.getCmp('order-form').old_delivery_city = response.result.data.delivery_city_id;
Ext.getCmp('order-form').delivery_metro = response.result.data.delivery_metro_id;
Ext.getCmp('order-form').old_delivery_country = response.result.data.delivery_country_id;
Ext.getCmp('order-form').delivery_place = response.result.data.delivery_place_id;
Ext.getCmp('main-viewport').render();
}
});
},
getDeliveryCost: function(orderId){
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
params: {
action: 'getDeliveryCost',
id: orderId
},
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
if (responseObj.id) {
responseObj = Ext.util.JSON.decode(response.responseText);
}
}
};
Ext.Ajax.request(o);
},
dataSave: function(status, update_delivery){
//о клиенте
var customer_id = Ext.getCmp('customer_id').getValue();
var s = {};
s.firstname = Ext.getCmp('firstname').getValue();
s.middlename = Ext.getCmp('middlename').getValue();
s.lastname = Ext.getCmp('lastname').getValue();
s.phone = Ext.getCmp('phone').getValue();
s.email = Ext.getCmp('email').getValue();
var birthdate = Ext.getCmp('birthdate').getValue();
if (birthdate)
s.birthdate = birthdate;
//organization
var org = {};
var orgid = Ext.getCmp('organization_data_id').getValue();
org.name = Ext.getCmp('name').getValue();
org.kpp = Ext.getCmp('kpp').getValue();
org.inn = Ext.getCmp('inn').getValue();
org.r_s = Ext.getCmp('r_s').getValue();
org.address = Ext.getCmp('address').getValue();
org.bank = Ext.getCmp('bank').getValue();
org.kor_s = Ext.getCmp('kor_s').getValue();
org.bik = Ext.getCmp('bik').getValue();
if (org.name && org.kpp && org.r_s && org.bank && org.kor_s && org.bik && org.address) {
var action = 'update';
if (!orgid) {
action = 'new';
}
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
params: {
action: action,
tblName: 'tbl_organization_data',
values: Ext.encode(org),
condition: Ext.encode({
'id': orgid
})
//,saveValue: Ext.encode(s)
}, //params
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
if (responseObj.id) {
Ext.getCmp('organization_data_id').setValue(responseObj.id);
Ext.MessageBox.show({
msg: 'Cоздана организация с id: ' + responseObj.id
});
s.organization_data_id = responseObj.id;
s.is_organization = 'true';
var clientdata = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_customer',
values: Ext.encode(s),
condition: Ext.encode({
'id': customer_id
})
}, //params
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
}
};
Ext.Ajax.request(clientdata);
}
//save client data
}
};
Ext.Ajax.request(o);
}
else {
var clientdata = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_customer',
values: Ext.encode(s),
condition: Ext.encode({
'id': customer_id
})
}, //params
callback: function(options, success, response){
//alert('callback');
responseObj = Ext.util.JSON.decode(response.responseText);
}
};
Ext.Ajax.request(clientdata);
}
//save data to tbl_order
var d = {};
if (status) {
d.status_bo = status;
}
var order_id = Ext.getCmp('id').getValue();
//var payment_type = Number(Ext.getCmp('payment_type').getValue());
var date_paid = Ext.getCmp('date_paid').getValue();
var delivery_cost = Number(Ext.getCmp('delivery_cost').getValue());
if (date_paid)
d.date_paid = date_paid;
//if (payment_type) d.payment_type = payment_type;
if (delivery_cost || delivery_cost == 0)
d.delivery_cost = delivery_cost;
//доставка // Пересчет!!!!!
f = {};
var form_id = Ext.getCmp('order-form');
var action = 'update';
var delivery_type = Number(Ext.getCmp('delivery_type').getValue());
var delivery_place = Number(Ext.getCmp('delivery_place').getValue());
var delivery_metro = Number(Ext.getCmp('delivery_metro').getValue());
var delivery_city = (Ext.getCmp('delivery_city').getRawValue()) ? Number(Ext.getCmp('delivery_city').getValue()): '';
var delivery_country = Number(Ext.getCmp('delivery_country').getValue());
// for comment, change delivery type
var com_del_type = {};
tmp_delivery_type = delivery_type;
if (!delivery_type && Ext.getCmp('delivery_type').getRawValue()) {
tmp_delivery_type = form_id.old_delivery_type;
}
if (Number(form_id.old_delivery_type) != Number(tmp_delivery_type)) {
com_del_type.comment = 'изменение способа доставки с ' + form_id.old_delivery_type_name + ' на ' + Ext.getCmp('delivery_type').getRawValue();
}
//-----
var delivery_id = Ext.getCmp('delivery_id').getValue();
var delivery_index = Ext.getCmp('delivery_index').getValue();
var delivery_address = Ext.getCmp('delivery_address').getValue();
var delivery_building = Ext.getCmp('delivery_building').getValue();
//var comment = Ext.getCmp('comment').getValue();
var delivery_building_1 = Ext.getCmp('delivery_building_1').getValue();
var delivery_flat = Ext.getCmp('delivery_flat').getValue();
var delivery_date = Ext.getCmp('delivery_date').getValue();
var delivery_time_min = Number(Ext.getCmp('delivery_time_min').getValue());
var delivery_time_max = Number(Ext.getCmp('delivery_time_max').getValue());
if (delivery_date) {
f.delivery_date = delivery_date;
}
else {
f.delivery_date = 'NULL';
}
if (delivery_place) {
f.delivery_place = delivery_place;
}
else if (!Ext.getCmp('delivery_place').getRawValue())
{
f.delivery_place = 'NULL';
}
if (delivery_metro) {
f.delivery_metro = delivery_metro;
}
else if (!Ext.getCmp('delivery_metro').getRawValue())
{
f.delivery_metro = 'NULL';
}
if (delivery_country) {
f.delivery_country = delivery_country;
}
else {
if (action == 'new' && form_id.old_delivery_country) {
f.delivery_country = form_id.old_delivery_country
}
}
if (delivery_type) {
f.delivery_type = delivery_type;
}
else {
if (action == 'new') {
f.delivery_type = form_id.old_delivery_type
}
}
if (delivery_city) {
f.delivery_city = delivery_city;
}
else {
//alert(Ext.getCmp('delivery_city').getRawValue());
if (!Ext.getCmp('delivery_city').getRawValue())
{
f.delivery_city = 'NULL';
}
if (action == 'new' && form_id.old_delivery_city) {
f.delivery_city = form_id.old_delivery_city
}
}
f.delivery_index = delivery_index;
f.delivery_address = delivery_address;
//f.delivery_comment = comment;
f.delivery_building = delivery_building;
f.delivery_building_1 = delivery_building_1;
f.delivery_flat = (delivery_flat) ? delivery_flat : 'NULL';
f.delivery_time_max = (delivery_time_max) ? delivery_time_max : 'NULL';
f.delivery_time_min = (delivery_time_min) ? delivery_time_min : 'NULL';
// var delivery_metro = Number(Ext.getCmp('delivery_metro').getValue());
//
// f.delivery_metro = (delivery_metro) ? delivery_metro : form_id.old_delivery_metro;
/*
if (Ext.getCmp('delivery_metro').getRawValue())
{
var delivery_metro = Number(Ext.getCmp('delivery_metro').getValue());
if (delivery_metro) { f.delivery_metro = delivery_metro;}
}
else
{
if (action == 'update') f.delivery_metro = 'NULL';
}
*/
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: action,
tblName: 'tbl_order_delivery',
values: Ext.encode(f),
condition: Ext.encode({
'id': delivery_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
var y = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_order',
values: Ext.encode(d),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
//alert(responseObj.success);
if (! responseObj.success)
{
Ext.MessageBox.show({
msg: responseObj.message
});
}
if (success && f.delivery_type && responseObj.success) {
form_id.old_delivery_type = f.delivery_type;
form_id.old_delivery_type_name = Ext.getCmp('delivery_type').getRawValue();
}
if (success && responseObj.success && update_delivery)
{
var del_upd = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update_delivery_date',
values: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success && responseObj.success) {
var deliv_data = responseObj.data.date;
if (status)
{
Ext.MessageBox.buttonText.yes = 'Да';
Ext.MessageBox.buttonText.no = 'Нет';
Ext.MessageBox.confirm('Подтверждение', 'Изменить дату доставки c '+
Ext.getCmp('delivery_date').getRawValue()+' на '+
responseObj.data.date+'?', function(btn){
if (btn == 'yes') {
// update tbl_order_delivery
Ext.getCmp('delivery_date').setValue(deliv_data);
var o123 = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update',
tblName: 'tbl_order_delivery',
values: Ext.encode({'delivery_date': deliv_data}),
condition: Ext.encode({
'id': delivery_id
})
}, //params
callback: function(options, success, response){
//
}};
Ext.Ajax.request(o123);
}
})
}
else
{
Ext.getCmp('delivery_date').setValue(responseObj.data.date);
Ext.MessageBox.show({
msg: "Срок доставки изменён на "+responseObj.data.date+"!"+" "+
((responseObj.data.week_day)?"\nДоставляется по "+week_days[responseObj.data.week_day]:'')
});
}
}
else
{
if (responseObj.messages)
{
Ext.MessageBox.show({
msg: responseObj.messages[0]
});
}
else
{
if (responseObj.messages)
{
Ext.MessageBox.show({
msg: responseObj.messages[0]
});
}
else
{
Ext.MessageBox.show({
msg: "Ошибка работы сервера!"
});
}
}
}
}
};
Ext.Ajax.request(del_upd);
}
if (success && com_del_type.comment && responseObj.success) {
var om = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'addcomment',
tblName: 'tbl_order',
autocom: 1,
values: Ext.encode(com_del_type),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success) {
Ext.getCmp('ordercreate-comment').setValue(responseObj.data[0].comment);
}
}
};
Ext.Ajax.request(om);
}
if (success && status && responseObj.success) {
Ext.MessageBox.show({
msg: 'Заказ оформлен'
});
Ext.Ajax.request({
url: '/office/server/callcenter/server.php',
method: 'POST',
params: {
action: 'delete',
tblName: 'tbl_order_reserve',
condition: Ext.encode({
'order_id': order_id
})
}
});
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'addcomment',
tblName: 'tbl_order',
autocom: 1,
values: Ext.encode({
'comment': ' оформил '
}),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success) {
Ext.getCmp('ordercreate-comment').setValue(responseObj.data[0].comment);
}
}
};
Ext.Ajax.request(o);
var add_data_for_comment = '';
del_type = (f.delivery_type) ? Number(f.delivery_type) : Number(form_id.old_delivery_type);
var del_city = (delivery_city)? delivery_city : form_id.old_delivery_city;
var del_place = (delivery_place)? delivery_place : form_id.delivery_place;
//var del_metro = (delivery_metro)? delivery_metro : form_id.delivery_metro;
var exp_courier = '';
switch (del_type) {
case 2:
exp_courier = " экспресс ";
case 1:
var del_date = delivery_date.getDate() + '.' + (delivery_date.getMonth() + 1) + '.' + delivery_date.getFullYear();
add_data_for_comment = 'К ' +exp_courier+ del_date + ' с ' + ((delivery_time_min) ? delivery_time_min : '9') + ' по ' + ((delivery_time_max) ? delivery_time_max : '22');
//alert(add_data_for_comment);
break;
case 3:
if (del_place == 346) {
add_data_for_comment = ' C Вятская';
}
else
if (del_city == 1) {
add_data_for_comment = 'С Москва';
}
else
if (del_city == 2) {
add_data_for_comment = 'С Питер';
}
else {
add_data_for_comment = 'С Регионы';
}
break;
case 7:
case 8:
add_data_for_comment = 'П';
break;
default:
add_data_for_comment = Ext.getCmp('delivery_type').getRawValue();
break;
}
var a = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'addcomment',
autocom: 1,
firstrow: 1,
tblName: 'tbl_order',
values: Ext.encode({
'comment_st': add_data_for_comment
}),
condition: Ext.encode({
'id': order_id
})
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success) {
Ext.getCmp('ordercreate-comment_st').setValue(responseObj.data[0].comment_st);
}
}
};
Ext.Ajax.request(a);
}
}
};
Ext.Ajax.request(y);
Ext.getCmp('order-items-grid').dataSave();
//Ext.getCmp('payment-grid').dataSave();
}
};
function alert_obj(obj) {
var txt = '';
for (var i in obj) {
txt += i + "---" + obj[i] + "\n";
}
alert(txt);
}
var payment_check = false;
del_type = (f.delivery_type) ? Number(f.delivery_type) : Number(form_id.old_delivery_type);
if (del_type != 8)
{
var records = Ext.getCmp('payment-grid').store.getRange();
Ext.each(records, function(r, i) {
if (r.modified)
{
var o = r.getChanges();
pay = o['name'];
}
else
{
pay = r.get('payment_type');
}
if(pay == 9) payment_check = true;
});
}
Ext.getCmp('payment-grid').dataSave();
Ext.getCmp('order-items-grid').dataSave();
if (payment_check)
{
Ext.MessageBox.show({
msg: 'Неверные способы оплаты у заказа'
});
return;
}
Ext.Ajax.request(o);
},
deliverySave: function(status){
var order_id = Ext.getCmp('id').getValue();
//доставка // Пересчет!!!!!
f = {};
var form_id = Ext.getCmp('order-form');
var action = 'update';
var delivery_type = Number(Ext.getCmp('delivery_type').getValue());
var delivery_place = Number(Ext.getCmp('delivery_place').getValue());
var delivery_metro = Number(Ext.getCmp('delivery_metro').getValue());
var delivery_city = (Ext.getCmp('delivery_city').getRawValue()) ? Number(Ext.getCmp('delivery_city').getValue()): '';
var delivery_country = Number(Ext.getCmp('delivery_country').getValue());
// for comment, change delivery type
var com_del_type = {};
tmp_delivery_type = delivery_type;
if (!delivery_type && Ext.getCmp('delivery_type').getRawValue()) {
tmp_delivery_type = form_id.old_delivery_type;
}
if (Number(form_id.old_delivery_type) != Number(tmp_delivery_type)) {
com_del_type.comment = 'изменение способа доставки с ' + form_id.old_delivery_type_name + ' на ' + Ext.getCmp('delivery_type').getRawValue();
}
//-----
var delivery_id = Ext.getCmp('delivery_id').getValue();
var delivery_index = Ext.getCmp('delivery_index').getValue();
var delivery_address = Ext.getCmp('delivery_address').getValue();
var delivery_building = Ext.getCmp('delivery_building').getValue();
var delivery_building_1 = Ext.getCmp('delivery_building_1').getValue();
var delivery_flat = Ext.getCmp('delivery_flat').getValue();
var delivery_date = Ext.getCmp('delivery_date').getValue();
var delivery_time_min = Number(Ext.getCmp('delivery_time_min').getValue());
var delivery_time_max = Number(Ext.getCmp('delivery_time_max').getValue());
if (delivery_date) {
f.delivery_date = delivery_date;
}
else {
f.delivery_date = 'NULL';
}
if (delivery_place) {
f.delivery_place = delivery_place;
}
else if (!Ext.getCmp('delivery_place').getRawValue())
{
f.delivery_place = 'NULL';
}
if (delivery_metro) {
f.delivery_metro = delivery_metro;
}
else if (!Ext.getCmp('delivery_metro').getRawValue())
{
f.delivery_metro = 'NULL';
}
if (delivery_country) {
f.delivery_country = delivery_country;
}
else {
if (action == 'new' && form_id.old_delivery_country) {
f.delivery_country = form_id.old_delivery_country
}
}
if (delivery_type) {
f.delivery_type = delivery_type;
}
else {
if (action == 'new') {
f.delivery_type = form_id.old_delivery_type
}
}
if (delivery_city) {
f.delivery_city = delivery_city;
}
else if (!Ext.getCmp('delivery_city').getRawValue())
{
f.delivery_city = 'NULL';
}
f.delivery_index = delivery_index;
f.delivery_address = delivery_address;
//f.delivery_comment = comment;
f.delivery_building = delivery_building;
f.delivery_building_1 = delivery_building_1;
f.delivery_flat = (delivery_flat) ? delivery_flat : 'NULL';
f.delivery_time_max = (delivery_time_max) ? delivery_time_max : 'NULL';
f.delivery_time_min = (delivery_time_min) ? delivery_time_min : 'NULL';
f.order_id = Ext.getCmp('id').getValue();
var o = {
url: '/office/server/callcenter/server.php',
method: 'post',
scope: this,
params: {
action: 'update_delivery_date',
values: Ext.encode(f)
}, //params
callback: function(options, success, response){
responseObj = Ext.util.JSON.decode(response.responseText);
if (success && responseObj.success) {
if (responseObj.messages)
{
Ext.MessageBox.show({
msg: responseObj.messages[0]
});
}
Ext.getCmp('order-form').dataSave(status);
}
else
{
if (responseObj.messages)
{
Ext.MessageBox.show({
msg: responseObj.messages[0]
});
}
else
{
Ext.MessageBox.show({
msg: "Ошибка работы сервера!"
});
}
}
Ext.getCmp('order-form').dataLoad(order_id);
}
};
Ext.Ajax.request(o);
}
});
Ext.reg('OrderForm', nsMain.OrderForm);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment