ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WINHTTP PIC X(128) VALUE "WinHttp.WinHttpRequest.5.1".
01 WSDL PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl".
01 xTraffic-Conditions.
03 xtr01 pic x(060) value "<?xml version=""1.0"" encoding=""UTF-8""?>".
03 xtr02 pic x(080) value "<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"">".
03 xtr03 pic x(019) value " <SOAP-ENV:Body>".
03 xtr04 pic x(086) value " <tns1:checkVat xmlns:tns1=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">".
03 xtr05 pic x(024) value " <tns1:countryCode>".
03 xtrPais PIC X(02) VALUE "PT".
03 XTR05A PIC X(20) VALUE "</tns1:countryCode>".
03 xtr06 pic x(022) value " <tns1:vatNumber>".
03 XTRNIF PIC X(050) VALUE SPACE.
03 xtr07 pic x(022) value " </tns1:checkVat>".
03 xtr08 pic x(020) value " </SOAP-ENV:Body>".
03 xtr09 pic x(022) value "</SOAP-ENV:Envelope>".
01 Traffic-Conditions redefines xTraffic-Conditions pic x(386).
01 WEBSERVICE USAGE OBJECT REFERENCE COM.
01 OP1 PIC X(256) VALUE "POST".
01 OP2 PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/services/checkVatService/".
01 OP3 PIC X(256) VALUE "FALSE".
*
01 OP4 PIC X(256) VALUE "Content-Type".
01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".
01 OP6 PIC X(256) VALUE "SOAPAction".
01 COUNTER pic s9(09) comp-5.
01 DMICON pic s9(09) comp-5.
01 returnvalue pic s9(09) comp-5.
01 RESPOSTA PIC X(8192).
01 NOME PIC X(0064).
01 MORADA PIC X(0256).
01 WMORADA PIC X(0256).
01 MOR PIC X(100).
01 LOCP PIC X(100).
01 CODP PIC X(012).
*
01 MSG.
03 MSG01 PIC X(016) VALUE "O resultado é: " .
03 MSG02 PIC X(015) VALUE SPACE.
03 MSG03 PIC X(006) VALUE "Nome: ".
03 MSG04 PIC X(061) VALUE SPACE.
03 MSG05 PIC X(008) VALUE "Morada: ".
03 MSG06 PIC X(061) VALUE SPACE.
03 MSG07 PIC X(010) VALUE "C.Postal:".
03 MSG08 PIC X(010) VALUE SPACE.
03 MSG09 PIC X(080) VALUE "Se pretende passar os dados para a Ficha, pressione o botão SIM.".
*
*
PROCEDURE DIVISION.
MAIN SECTION.
MAIN-00.
MOVE SPACE TO XTRNIF.
IF "text" OF CmPais-ISO NOT = SPACE MOVE "text" OF CmPais-ISO TO xtrPais
ELSE
MOVE ZERO TO DMICON
INVOKE POW-SELF "DisplayMessage" USING "Não tem País definido!" "Teste" POW-DMICONINFORMATION
GO TO MAIN-99-EXIT.
IF "TEXT" OF CMNRCONTR NOT = SPACE MOVE "TEXT" OF CMNRCONTR TO XTRNIF
ELSE
GO TO MAIN-99-EXIT.
MOVE ZERO TO COUNTER.
INSPECT XTRNIF TALLYING COUNTER FOR ALL SPACES.
SUBTRACT COUNTER FROM 50 GIVING COUNTER. ADD 1 TO COUNTER.
MOVE "</tns1:vatNumber>" TO XTRNIF(COUNTER:).
* INVOKE ButtonPlus1 "OpenWebsite" USING sAddress.
INVOKE COM "CREATE-OBJECT" USING WINHTTP RETURNING WEBSERVICE.
*
INVOKE WEBSERVICE "OPEN" USING op1 op2 op3.
*
INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .
*
INVOKE WEBSERVICE "send" USING TRAFFIC-CONDITIONS.
*
INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA.
*****
MOVE RESPOSTA TO XMLLINHA.
MOVE "valid" TO XMLFIELDSEARCH.
CALL "GETXMLFIELD".
MOVE XMLFIELDRESULT TO OK.
IF XMLFIELDRESULT = "true" MOVE " VALIDO " TO MSG02
ELSE MOVE "INVALIDO" TO MSG02.
MOVE X"0A0A0A" TO MSG02(12:3).
*
MOVE "name" TO XMLFIELDSEARCH.
CALL "GETXMLFIELD".
move XMLFIELDRESULT TO MSG04.
*
MOVE "address" TO XMLFIELDSEARCH.
CALL "GETXMLFIELD".
move XMLFIELDRESULT TO MORADA.
*
MOVE X"0A" TO MSG04(60:1).
UNSTRING MORADA DELIMITED BY "<" INTO WMORADA.
UNSTRING WMORADA DELIMITED BY X"0A" INTO MOR COUNT IN COUNTER
LOCP COUNT IN COUNTER
CODP COUNT IN COUNTER.
MOVE MOR TO MSG06.
MOVE CODP TO MSG08.
MOVE SPACE TO MSG08(9:).
MOVE X"0D0A" TO MSG06(60:1).
MAIN-70.
IF OK NOT = "t" GO TO MAIN-80.
IF "ENABLED" OF CMNOME = POW-FALSE GO TO MAIN-80.
MOVE X"0A0A" TO MSG09.
MOVE " Se pretende passar os dados para a Ficha, pressione o botão SIM." TO MSG09.
MOVE X"0A0A" TO MSG09(1:2).
MOVE ZERO TO DMICON.
ADD POW-DMICONINFORMATION POW-DMYESNO POW-DMDEFBUTTON2 TO DMICON.
INVOKE POW-SELF "DisplayMessage" USING MSG "R.P.S. - Faturação" DMICON
RETURNING ReturnValue.
IF RETURNVALUE = POW-DMRYES
MOVE MSG04 TO "TEXT" OF CMNOME
MOVE MSG06 TO "TEXT" OF CMMORADA
MOVE MSG08 TO "TEXT" OF CMCODP.
GO TO MAIN-90.
MAIN-80.
MOVE SPACE TO MSG09.
MOVE ZERO TO DMICON.
INVOKE POW-SELF "DisplayMessage" USING MSG "R.P.S. - Faturação" POW-DMICONINFORMATION
RETURNING ReturnValue.
MAIN-90.
SET WEBSERVICE TO NULL.
MOVE SPACE TO NOME MOR LOCP CODP RESPOSTA.
MAIN-99-EXIT.
EXIT PROGRAM.