Код: Выделить всё
window EDITSOPR;
handleEvent
cmMAKEPRIH :
{
var bForOrder : boolean;
bForOrder := TRUE;
/*
00000000000003D6h Формирование ордеров по накладным только в статусе "исполняемый" 1873
00000000000003D5h Редактирование накладной при наличии складских ордеров 1876
*/
if((getfirst tuneval where (( comp(00000000000003D6h) == tuneval.ctune )) and (UserId = tuneval.cuser)) = tsOk )
{
case tuneval.STRVAL of
'да' :
{
// проверить документв состоянии "исполняемый"
// если да, то проверять на наличие даты по ордерам
// если есть, то проверять на наличие разрешения в 1876 на разрешение
// если да, то TRUE
// если нет, то FALSE
// если нет, то TRUE
// если нет, то FALSE
if ( katsopr.status = 1 )
{
if( datetostr(katsopr.dopr,'DD-MM-YYYY') <> 'ДД-ММ-ГГГГ' )
{
if((getfirst tuneval where (( comp(00000000000003D5h) == tuneval.ctune )) and (UserId = tuneval.cuser)) = tsOk )
case tuneval.STRVAL of
'разрешать' : {bForOrder := TRUE;}
'запрещать' : {bForOrder := FALSE;}
end;
}
else if( datetostr(katsopr.dopr,'DD-MM-YYYY') = 'ДД-ММ-ГГГГ' )
{ bForOrder := TRUE;}
}
else {bForOrder := FALSE;}
}
'нет' :
{
// если да, то проверять на наличие даты по ордерам
// если есть, то проверять на наличие разрешения в 1876 на разрешение
// если да, то TRUE
// если нет, то FALSE
if( datetostr(katsopr.dopr,'DD-MM-YYYY') <> 'ДД-ММ-ГГГГ' )
{
if((getfirst tuneval where (( comp(00000000000003D5h) == tuneval.ctune )) and (UserId = tuneval.cuser)) = tsOk )
case tuneval.STRVAL of
'разрешать' : {bForOrder := TRUE; }
'запрещать' : {bForOrder := FALSE;}
end;
}
else if( datetostr(katsopr.dopr,'DD-MM-YYYY') = 'ДД-ММ-ГГГГ' )
{bForOrder := TRUE; }
}
end;
}
//if(bForOrder = TRUE)
//{
/*var tempsumval : double;
if (VALUT <> 'руб')
{
RunInterface(L_VAL::CURSVAL, katsopr.cval, -1, katsopr.dprice, 3);
if( getfirst CURSVAL where(( katsopr.cval == cursval.kodvalut and katsopr.dprice == cursval.datval )) = tsOk)
tempsumval := cursval.sumrubl;
// 1 )
Katsopr.Summa := katsopr.SUMVAL * tempsumval;
update current katsopr;
// 2 )
if ( getfirst spsopr where (( katsopr.nrec == spsopr.csopr )) = tsOk )
do
{
if( spsopr.vidsopr = katsopr.vidsopr )
{
spsopr.Price := spsopr.RVPRICE * tempsumval;
spsopr.Rprice := spsopr.RVPRICE * tempsumval;
update current spsopr;
}
}
while ( getnext spsopr where (( katsopr.nrec == spsopr.csopr )) = tsOk );
// 3 )
if ( getfirst spdocnal where (( katsopr.nrec == spdocnal.cdoc )) = tsOk )
do
{
if( spdocnal.tipdoc = katsopr.vidsopr )
{
spdocnal.VALCURSE := tempsumval;
spdocnal.CROSCURSE := (1/ tempsumval);
update current spdocnal;
}
}
while( getnext spdocnal where (( katsopr.nrec == spdocnal.cdoc )) = tsOk )
// 4 )
if ( getfirst soprhoz where (( katsopr.nrec == soprhoz.csoprdoc and katsopr.vidsopr == soprhoz.tipdoc )) = tsOk )
{
soprhoz.summa := katsopr.SUMVAL * tempsumval;
update current soprhoz;
}
ReReadRecord(#katsopr);
ReReadRecord(#spsopr);
ReReadRecord(#soprhoz);
ReReadRecord(#spdocnal);
}*/
//********************************************************************
//настройки ('Автоматическое формирование партий перед созданием ордеров') 1504
//if( (getfirst tuneval where (( comp(281474976715392) == tuneval.ctune )) and (UserId = tuneval.cuser)) = tsOk )
//{
// case tuneval.STRVAL of
// 'нет' :
// {
//spsopr_party// вызов с помощью SQLD
var stmt,stmt2 : LongInt;
var stmt_str,stmt_str2 : LongInt;
var messageErr,messageErr2 : longint;
var nresult,nresult2 : string;
var cKatsoprNrec : comp;
cKatsoprNrec := comp(0);
cKatsoprNrec := comp(katsopr.nrec);
stmt := sqlAllocStmt;
sqlAddStr(stmt_str, 'select top 1 F_SPSOPR_PARTY(?) from katmc');
sqlBindParam( stmt, 1, cKatsoprNrec );
sqlPrepare(stmt, stmt_str);
sqlFreeStr(stmt_str);
sqlBindCol(stmt, 1, nresult);
messageErr := sqlExecute(stmt);
if(messageErr = 0)
{
while( sqlFetch( stmt ) = tsOk )
do
{
if(nresult = 1)
{
ReReadRecord(#spsopr);
if (inherited::handleEvent(cmMAKEPRIH) = heOK)
{
//if IsModified
//{
stmt2 := sqlAllocStmt;
sqlAddStr(stmt_str2, 'select top 1 F_SPSOPR_AFTER(?) from katmc');
sqlBindParam( stmt2, 1, cKatsoprNrec );
sqlPrepare(stmt2, stmt_str2);
sqlFreeStr(stmt_str2);
sqlBindCol(stmt2, 1, nresult2);
messageErr2 := sqlExecute(stmt2);
if(messageErr2 = 0)
{
while( sqlFetch( stmt2 ) = tsOk )
do
{
if(nresult2 = 1)
{
ReReadRecord(#spsopr);
}
else if(nresult2 = 2)
{
message('Ошибка в F_SPSOPR_AFTER обратитесь по телефону 4542. Накладная не будет оприходована', Warning);
}
else if(nresult2 = 3)
{
message('Ошибка в классификации, обратитесь по телефону 91. Накладная не будет оприходована', Warning);
}
}
}
else message('Звоните по телефону 91 ( номер ошибки: ' + messageErr2 + ' при выполнении функциии F_SPSOPR_AFTER)');
sqlFreeStmt(stmt2);
//}
}
else
message ('Ордер не сформировался');
}
else if (nresult = 2)
{
message('Ошибка классификации МЦ, обратитесь по телефону 4542. Накладная не будет оприходована', Warning);
}
else if(nresult = 3)
{
message('Ошибка, обратитесь по телефону 91. Накладная не будет оприходована', Warning);
}
}
}
else message('Звоните по телефону 91 ( номер ошибки: ' + messageErr + ' при проставлении партии)');
sqlFreeStmt(stmt);
// }
// 'да' : {}
// end;
//}
//}
//***********************************************************************
if ( VALUT <> 'руб' and katsopr.dopr <> katsopr.dprice and datetostr(katsopr.dopr,'DD-MM-YYYY') <> 'ДД-ММ-ГГГГ' )
message('Дата курса валюты не совпадает с датой ордера!', Warning);
}