// ***************************************************************************** // Название: Отправка заявления/ответа на требование // Описание: // Кнопка вызова: // Подпись кнопки: // Вызов по событию: // ***************************************************************************** // FUNC('NotFindErrorsInFillingJrData', Param('pDocType', integer, 0, 1), Block ( VAR ('iResult', integer, 0); VAR ('sCheck', string, ''); IF (pDocType = 0, //Ответ на требование Block ( IF (FIELDISNULL ('JR_OPERATIONS','DOCUMENTSIGN') = 1, sCheck := 'Не заполнен признак решения склада!'); IF ((JR_OPERATIONS.TRANSPVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','TRANSPDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по транспортировке!'); IF ((JR_OPERATIONS.WEIGHINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','WEIGHINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по взвешиванию!'); IF ((JR_OPERATIONS.DEFQUANTVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','DEFQUANTDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по иному определению количества!'); IF ((JR_OPERATIONS.LOADINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','LOADINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по погрузке!'); IF ((JR_OPERATIONS.UNLOADINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','UNLOADINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по выгрузке!'); IF ((JR_OPERATIONS.OVERLOADINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','OVERLOADINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по перегрузке!'); IF ((JR_OPERATIONS.CORRPACKVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','CORRPACKDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по исправлению поврежденной упаковки!'); IF ((JR_OPERATIONS.UNPACKINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','UNPACKINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по вскрытию упаковки!'); IF ((JR_OPERATIONS.PACKINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','PACKINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по упаковке!'); IF ((JR_OPERATIONS.REPACKINGVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','REPACKINGDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по переупаковке!'); IF ((JR_OPERATIONS.OLG_VALUE=1)*(FIELDISNULL ('JR_OPERATIONS','OLG_DECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по по вскрытию помещ.!'); IF ((JR_OPERATIONS.DIVISIONVALUE=1)*(FIELDISNULL ('JR_OPERATIONS','DIVISIONDECISION') = 1), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Нет решения по разделению тов. партии!'); ) ); IF (pDocType = 1, //Заявление Block ( IF (Length (JR_OPERATIONS.REQNUMBER) = 0, sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Не заполнен номер заявления!'); IF (Length (JR_OPERATIONS.REQDATE) = 0, sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Не заполнена дата заявления!'); IF (Length (JR_OPERATIONS.INSPFIO) = 0, sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Не заполнены ФИО инспектора!'); ) ); IF (Length (JR_OPERATIONS.CustomsCode) = 0, sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Не заполнен код поста!'); IF ((Length (JR_OPERATIONS.DeclOrgName) = 0)*(Length (JR_OPERATIONS.ReprOrgName) = 0), sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Не заполнен декларант или представитель!'); //IF (Length (JR_OPERATIONS.GTDNumber) = 0, sCheck := IF (sCheck <> '', sCheck +char(13)) + 'Не заполнен номер ДТ'); IF (LENGTH (sCheck) = 0, iResult := 1, showmessage(sCheck) ); iResult ) ), FUNC ('CheckCurrentStatus',, Block ( VAR ('iResult', integer, 0); IF((JR_OPERATIONS.DOC_REG_STATUS = 'И')|(JR_OPERATIONS.DOC_REG_STATUS = '3')|(JR_OPERATIONS.Status = sNotificationSentStatusText)|(JR_OPERATIONS.Status = 'Получено решение от инспектора'), IF(JR_OPERATIONS.DocSign = 0, Showmessage('Ответ на текущее требование уже доставлен в таможню!'), Showmessage('Текущее заявление уже отправлено в таможню!') ), iResult := 1 ); iResult ) ), // FUNC ('CheckStatementsSentBefore',, Block ( VAR ('iResult', integer, 0); VAR ('sSQL', string, ''); sSQL := 'SELECT JOURNAL_MASTER_ID as JMID FROM JR_OPERATIONS ' + ' WHERE ID =' + vID + ' AND JOURNAL_MASTER_ID <> ' + JR_OPERATIONS.JOURNAL_MASTER_ID + ' AND DOC_REG_STATUS IN (' + char(39) + '0' + char(39) + ', ' + char(39) + 'И' + char(39) + ')'; OPENQUERY ('findStatements', sSQL, 'dbJournals'); IF (FIELDISNULL ('findStatements', 'JMID'), iResult := 1, showmessage ('У вас есть заявления отправленные в таможню, на которые не был получен ответ. Отправка не возможна!') ); CLOSEDATASET ('findStatements'); iResult ) ), FUNC ('ValidateXml', Param ('sXmlPath', String, 0), Block ( VAR ('iResult', integer, 0); VAR ('v', Variant, CREATEOLEOBJECT ('SchemaValidator.Validator')); v.SchemaPath := INCLUDETRAILINGBACKSLASH (PROGRAMPATH ()) + 'STS-MED\SCHEMA\' + sXMLVersion + '\'; IF (v.ValidateFile (sXmlPath) = 'True', iResult := 1, v.ShowResult() ); iResult ) ), // FUNC - ValidateXml // FUNC ('ShowDocumentFromXml', Block ( Param ('sXmlPath', String, 0); Param ('sXsltID', String, 1); ), Block ( VAR ('iResult', integer, 0); VAR ('o', Variant, CREATEOLEOBJECT ('svh.Extention')); IF (o.GetXSLT3 (sXmlPath, sXsltID, sXMLVersion) = 'True', IF (o.Transformate() = 'True', Block ( o.ShowDocument(); iResult := 1; ) ) ); // IF - // iResult ) ), // FUNC - ShowDocumentFromXml // FUNC ('SendDocument', Block ( Param ('pDocumentNameLt', string, 0); Param ('pDocumentNameRus', string, 1); Param ('pStatus', string, 2); ), Block ( VAR ('sDir', String, INCLUDETRAILINGBACKSLASH (PROGRAMPATH ()) + 'STS-MED\iin\'); IF (USERINFO ('', 'UserUUID') <> '', sDir := sDir + USERINFO ('', 'UserUUID') + '\'); VAR ('sXmlFileName', string, sDir + pDocumentNameLt + '_' + vPlaceID + '_' + vDocId +'.xml'); FORCEDIRECTORIES (sDir); COPYFILE (sTmpFileName, sDir + pDocumentNameLt + '_' + vPlaceID + '_' + vDocId +'.xml'); EDIT('JR_OPERATIONS'); SETFIELDVALUE ('JR_OPERATIONS', 'Status', 'Рассматривается инспектором', 'DOC_REG_STATUS', 'И'); iSendResult := 1; VAR ('currDate', string, FDT ('DD.MM.YYYY HH:NN:SS', (Date() + Time(1)))); WriteEpsLog (vPLACEID, vID, 0, vDocId, 'ДО-1', vDoNum, vDoDate, 'Отправлено ' + pDocumentNameRus + ' на проведение операций', currDate, GENERATEUUID (), 'DocumentId= ' + JR_OPERATIONS.DOCUMENTID, sXmlFileName, 1, currDate, 0 ); // WriteEpsLog ) ), FUNC ('SendNotifFinish',, Block ( IF ( NotFindErrorsInFillingJrData (0), Block ( EXECUTESCRIPT (INCLUDETRAILINGBACKSLASH (PROGRAMPATH ()) + 'DATA\IMPEX\SCRIPTS\' + sXMLVersion + '\NotifFinish.exp'); sTempFileName := GetNotifFinishExpXml (vPlaceID, vDocID); VAR ('iSend', integer, 0); IF( ValidateXml (sTempFileName), IF ( YESNO ('Передать Решение по требованию на проведение операций с товарами?'), iSend := 1; ) ); IF ( iSend, SendDOcument('NotifFinishRejectOperations', 'решение на требование', sNotificationSentStatusText) ); // IF - ValidateXml // ) ); ) ), //FUNC - SendNotifFinish // FUNC ('SendReqOperations',, BLOCK ( // заявление - проверяем заполненность других полей IF (NotFindErrorsInFillingJrData () * CheckStatementsSentBefore(), Block ( // Получаем файл xml соответсвующий свежему альбому форматов EXECUTESCRIPT (INCLUDETRAILINGBACKSLASH (PROGRAMPATH ()) + 'DATA\IMPEX\SCRIPTS\' + sXMLVersion + '\ReqOperations.exp'); sTempFileName := GetReqOperationsExpXml (vPlaceID, vDocID); //Записать так IF ( ValidateXml (sTempFileName) * ShowDocumentFromXml (sTempFileName) * YESNO ('Передать Решение по требованию на проведение операций с товарами?') //Не получилось, т.к. даже если первая 0, то проверяет остальные, чего быть не должно VAR ('iSend', integer, 0); IF( ValidateXml (sTempFileName), IF (ShowDocumentFromXml (sTempFileName, '1006135E'), IF ( YESNO ('Передать Заявление о проведении операций с товарами?'), iSend := 1; ) ) ); IF ( iSend, SendDOcument('ReqWHOperations', 'заявление', sStatementSentStatusText) ); // IF - iSend // ), ); // IF - NotFindErrorsInFillingJrData// ) ), //FUNC - SendReqOperations // EXECUTESCRIPT (INCLUDETRAILINGBACKSLASH (PROGRAMPATH ()) + 'ProcDocs\write_eps_log.prd'); VAR ('vPlaceId', String); VAR ('vID', String, JR_OPERATIONS.ID); VAR ('vDoNum', string, ''); VAR ('vDoDate', string, ''); VAR ('mSQL', Memo, ''); VAR ('vDocID', String, '123'); VAR ('sTempFileName', String, ''); VAR ('iSendResult', integer, 0); VAR ('sXmlVersion', String, INIFILE ('XMLFormat', 'Version', '')); VAR ('sStatementSentStatusText', string, 'Заявление отправлено'); VAR ('sNotificationSentStatusText', string, 'Решение отправлено'); mSQL := 'SELECT PLACEID, ID, NBD, BD_DATE, DOCUMENTID, ALBUM_VERSION FROM KRD_MAIN WHERE ID=' + vID; OPENQUERY ('qDO1', 'STS_DB', mSQL); IF (FIELDISNULL ('qDO1', 'DOCUMENTID') = 0, Block ( vDocID := qDO1.DOCUMENTID; vPlaceId := qDO1.PLACEID; vDoNum := qDO1.NBD; vDoDate := qDO1.BD_DATE; IF (TRIM(qDO1.ALBUM_VERSION) <> '', sXmlVersion := qDO1.ALBUM_VERSION); ), Block ( //RAISEEXCEPTION (); ) ); IF( CheckCurrentStatus (), IF(JR_OPERATIONS.DocSign = 0, SendNotifFinish (), SendReqOperations () ) ); iSendResult