2 changed files with 225 additions and 0 deletions
@ -0,0 +1,87 @@
@@ -0,0 +1,87 @@
|
||||
// Модуль Frontol 4.9 для проведения платежей в АСР Гидра
|
||||
|
||||
function BeforeAct(AO, RO, E, O, CO) |
||||
{ |
||||
// Функция выполняется перед проведением платежа по кассовому аппарату
|
||||
// AO - объект приложения, RO - объект платежа
|
||||
var req = new ActiveXObject("Microsoft.XMLHTTP"); |
||||
// цикл по позициям чека
|
||||
for(RO.Pos.Index=1;RO.Pos.Index<=RO.Pos.Count;RO.Pos.Index++) |
||||
{ |
||||
|
||||
req.onreadystatechange = function() |
||||
{ |
||||
//Обрабатываем ответ сервера
|
||||
if(req.readyState==4 && req.status==200) { |
||||
var obj = eval("("+req.responseText+")"); |
||||
if(obj.result == "ERROR") { |
||||
AO.ShowMessage("Невозможно оплатить абоненту "+RO.UserValues.Get("UName_"+RO.Pos.Index)); |
||||
AO.Cancel(); |
||||
} |
||||
} |
||||
} |
||||
// Посылаем запрос об оплате позиции в чеке a - сумма, b - идентификатор абонента N_ACCOUNT_ID, с - код кассы, d - тип документа
|
||||
req.open("POST", "http://server:8383/oplnew.php", false); |
||||
var parm = "a="+RO.Pos.SummWD+"&b="+RO.UserValues.Get("UAID_"+RO.Pos.Index)+"&c=k9110001&d="+RO.ReceiptTypeCode; |
||||
req.setRequestHeader("Content-type","application/x-www-form-urlencoded"); |
||||
req.setRequestHeader("Content-length",parm.length); |
||||
req.send(parm); |
||||
|
||||
var req1 = new ActiveXObject("Microsoft.XMLHTTP"); |
||||
req1.onreadystatechange = function() |
||||
{ |
||||
//Обрабатываем ответ сервера
|
||||
if(req1.readyState==4 && req1.status==200) { |
||||
var obj = eval("("+req1.responseText+")"); |
||||
RO.UserValues.Set("UBal_"+RO.Pos.Index,obj[0].N_SUM_BAL); |
||||
switch (RO.UserValues.Get("UGID_" + RO.Pos.Index)) { |
||||
case "50638901": |
||||
// ИП 1 по секции 1
|
||||
RO.Pos.SetECRDepartment(1); |
||||
break; |
||||
case "50639001": |
||||
// ООО 1111 по секции 2
|
||||
RO.Pos.SetECRDepartment(2); |
||||
break; |
||||
case "50654901": |
||||
// ООО 2222 по секции 3
|
||||
RO.Pos.SetECRDepartment(3); |
||||
break; |
||||
case "2235433401": |
||||
// ООО 3333 по секции 4
|
||||
RO.Pos.SetECRDepartment(4); |
||||
break; |
||||
case "2844439801": |
||||
// ООО 4444 по секции 5
|
||||
RO.Pos.SetECRDepartment(5); |
||||
break; |
||||
case "930048701": |
||||
// ООО 5555 по секции 6
|
||||
RO.Pos.SetECRDepartment(6); |
||||
break; |
||||
|
||||
} |
||||
} |
||||
} |
||||
// Посылаем запрос о данных абонента после оплаты (текущий баланс на чек)
|
||||
req1.open("POST", "http://server:8383/getusers.php", false); |
||||
var parm = "address="+RO.UserValues.Get("UAccount_"+RO.Pos.Index)+"&tp=l"; |
||||
req1.setRequestHeader("Content-type","application/x-www-form-urlencoded"); |
||||
req1.setRequestHeader("Content-length",parm.length); |
||||
req1.send(parm); |
||||
} |
||||
} |
||||
|
||||
function AfterAct(AO, RO, E, O, CO) |
||||
{ |
||||
|
||||
} |
||||
|
||||
function FuncAct(AO, RO, CO) |
||||
{ |
||||
|
||||
} |
||||
|
||||
function NoAction(AO, RO, POS, CO, UserParam) |
||||
{ |
||||
} |
||||
@ -0,0 +1,138 @@
@@ -0,0 +1,138 @@
|
||||
// Модуль Frontol 4.9 для запроса данных о пользователе для проведения платежа из АСР ГИДРА
|
||||
|
||||
function BeforeAct(AO, RO, E, O, CO) |
||||
{ |
||||
// сервисая функция поиска по массиву
|
||||
function find(array,value) { |
||||
for(var i=0; i<array.length; i++) { |
||||
if (array[i] == value) return i; |
||||
} |
||||
return -1; |
||||
} |
||||
|
||||
// Глобальные переменные
|
||||
var pr = ""; // Строки для показа данных абонента
|
||||
var spr = ""; // Коды абонентов
|
||||
var obj = {}; |
||||
|
||||
// Запрос данных пользователя (адрес, либо код) и обработк-а полученных результатов
|
||||
do { |
||||
inputError = false; |
||||
input = AO.InputString("Введите адрес, либо часть адреса. Примеры: ysk-neve4a-116, neve4a","",40); |
||||
//Если введено пустое значение или отмена
|
||||
if(input == "" || input == null){ |
||||
input = AO.InputString("Введите лицевой счет. Примеры: 3742, 1003742","",40); |
||||
if(input == "" || input == null){ |
||||
AO.ShowMessage("Необходимо ОБЯЗАТЕЛЬНО ввести адрес или лицевой счет!", Icon.Error); |
||||
inputError = true; |
||||
} |
||||
else { |
||||
if(isNaN(input)){ |
||||
AO.ShowMessage("Лицевой счет должен быть введен цифрами!", Icon.Error); |
||||
inputError = true; |
||||
} |
||||
else { |
||||
input = "l_" + input; // префикс+лицевой счет
|
||||
} |
||||
} |
||||
} |
||||
else { |
||||
input = "a_" + input; // префикс+адрес
|
||||
} |
||||
} |
||||
while(inputError); |
||||
|
||||
|
||||
var req = new ActiveXObject("Microsoft.XMLHTTP"); |
||||
var grabon = ""; |
||||
req.onreadystatechange = function() |
||||
{ |
||||
//Обрабатываем ответ сервера
|
||||
if(req.readyState==4 && req.status==200) { |
||||
var tobj = eval("("+req.responseText+")"); |
||||
for(i=0;i<tobj.length;i++) { |
||||
// Выделение группы абонента (фирмы где зарегистрирован)
|
||||
switch (tobj[i].N_SUBJ_GROUP_ID) { |
||||
case "50638901": |
||||
grabon = ""; |
||||
break; |
||||
case "50639001": |
||||
grabon = ""; |
||||
break; |
||||
case "50654901": |
||||
grabon = "!!! Групп"; |
||||
break; |
||||
case "2235433401": |
||||
grabon = ""; |
||||
break; |
||||
case "2844439801": |
||||
grabon = ""; |
||||
break; |
||||
case "930048701": |
||||
grabon = "!!! ИП 11111"; |
||||
break; |
||||
} |
||||
pr += tobj[i].VC_SUBJ_CODE+" "+tobj[i].VC_SUBJ_NAME+" ("+tobj[i].N_PARENT_DOC+") "+tobj[i].N_SUBJ_STATE_ID+" "+grabon+"\n"; |
||||
grabon = ""; |
||||
spr += i+"\n"; |
||||
obj[i] = tobj[i]; |
||||
} |
||||
} |
||||
} |
||||
// Посылаем запрос о пользователях, попадающих в выборку
|
||||
req.open("POST", "http://server:8383/getusers.php", false); |
||||
var parm = "address="+input.slice(2)+"&tp="+input.slice(0,1); |
||||
req.setRequestHeader("Content-type","application/x-www-form-urlencoded"); |
||||
req.setRequestHeader("Content-length",parm.length); |
||||
req.send(parm); |
||||
|
||||
|
||||
// Выдаем запрос на выбор пользователя из списка
|
||||
input = AO.SelectString("Выберите адрес абонента",pr,spr); |
||||
if (input != null){ |
||||
// Если выбран пользователь
|
||||
// Сохраняем данные пользователя во временные переменные
|
||||
RO.UserValues.Set("tmpUName",obj[input]['VC_SUBJ_NAME']); |
||||
RO.UserValues.Set("tmpUCode",obj[input]['VC_SUBJ_CODE']); |
||||
RO.UserValues.Set("tmpUAccount",obj[input]['VC_CODE']); |
||||
RO.UserValues.Set("tmpUSID",obj[input]['N_SUBJECT_ID']); |
||||
RO.UserValues.Set("tmpUAID",obj[input].N_ACCOUNT_ID); |
||||
RO.UserValues.Set("tmpUGID",obj[input].N_SUBJ_GROUP_ID); |
||||
|
||||
arr = ["50638901","50639001","50654901","2235433401","2844439801","930048701"] |
||||
if (find(arr,obj[input].N_SUBJ_GROUP_ID)<0) AO.ShowMessage("Неверная группа у абонента! Рекомендуется отменить платеж до исправления!", Icon.Error); |
||||
} |
||||
else { |
||||
AO.ShowMessage("Платеж отменен, так как не был выбран клиент!",Icon.Exclamation); |
||||
AO.Cancel(); |
||||
} |
||||
|
||||
} |
||||
|
||||
function AfterAct(AO, RO, E, O, CO) |
||||
{ |
||||
// Переименовываем временные переменные в соответствии с номером позиции
|
||||
RO.UserValues.Set("UName_"+O.PosID,RO.UserValues.Get("tmpUName")); |
||||
RO.UserValues.Delete("tmpUName"); |
||||
RO.UserValues.Set("UCode_"+O.PosID,RO.UserValues.Get("tmpUCode")); |
||||
RO.UserValues.Delete("tmpUCode"); |
||||
RO.UserValues.Set("UAccount_"+O.PosID,RO.UserValues.Get("tmpUAccount")); |
||||
RO.UserValues.Delete("tmpUAccount"); |
||||
RO.UserValues.Set("USID_"+O.PosID,RO.UserValues.Get("tmpUSID")); |
||||
RO.UserValues.Delete("tmpUSID"); |
||||
RO.UserValues.Set("UAID_"+O.PosID,RO.UserValues.Get("tmpUAID")); |
||||
RO.UserValues.Delete("tmpUAID"); |
||||
RO.UserValues.Set("UGID_"+O.PosID,RO.UserValues.Get("tmpUGID")); |
||||
RO.UserValues.Delete("tmpUGID"); |
||||
|
||||
} |
||||
|
||||
function FuncAct(AO, RO, CO) |
||||
{ |
||||
|
||||
} |
||||
|
||||
function NoAction(AO, RO, POS, CO, UserParam) |
||||
{ |
||||
|
||||
} |
||||
Loading…
Reference in new issue