Advertisement
Zavaski

Untitled

Oct 5th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.77 KB | None | 0 0
  1. /*
  2. Add your SAP Business ByDesign scripting language implementation for:
  3. Business Object: Opportunity
  4. Node: Root
  5. Action: sendClientTo_Boletagem
  6.  
  7. Note:
  8. - To access the elements of the business object node,
  9. use path expressions, for example, this.<element name>.
  10. - To use code completion, press CTRL+J.
  11.  
  12. */
  13.  
  14. import ABSL;
  15. import AP.Common.GDT;
  16. import AP.FO.BusinessPartner.Global;
  17.  
  18. var wasSentToBoletagem : Indicator; //To know if is POST or PUT
  19. var cnpj : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //765 caracteres
  20. var inscricao_estadual : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  21. var localidade : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  22. var estado : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  23. var bairro : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  24. var cep : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  25. var complemento : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  26. var logradouro : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  27. var numero : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  28. var cnpj_matriz : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  29. var id_cliente : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  30. var menemonico : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  31. var nome_curto : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  32. var parte_relacionada : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  33. var pertence_grupo_cpfl : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  34. var razao_social : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  35. var tipo_agente : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
  36.  
  37. this.checkIfClientIsOn_Boletagem(); //It will check if the client is already on Boletagem to decide if the client can be sent or not to there
  38. if(this.ProspectParty.IsSet()) { //If there is a client associated to the opportunity
  39. var customer = Customer.Retrieve(this.ProspectParty.PartyUUID); //Get the client
  40. if(customer.IsSet()) {
  41. //------------------------------------------ Fill the Request -----------------------------------------------//
  42. wasSentToBoletagem = customer.CurrentCommon.wasSentToBoletagem;
  43. cnpj = customer.CurrentCommon.CNPJ;
  44. inscricao_estadual = customer.CurrentCommon.InscrioEstadual;
  45. //----------Addresss----------//
  46. if(customer.CurrentDefaultAddressInformation.IsSet()) { //If there is an address
  47. if(!customer.CurrentDefaultAddressInformation.CityId.IsInitial()) { //Set the id of the city that is in the address node
  48. localidade = customer.CurrentDefaultAddressInformation.CityId.RemoveLeadingZeros();
  49. estado = City.Retrieve(localidade).StateId.RemoveLeadingZeros();
  50. }
  51. if(customer.CurrentDefaultAddressInformation.Address.DefaultPostalAddressRepresentation.IsSet()) { //Set the rest of the information
  52. var address = customer.CurrentDefaultAddressInformation.Address.DefaultPostalAddressRepresentation;
  53. bairro = address.DistrictName;
  54. cep = address.StreetPostalCode.Replace("-", "");
  55. complemento = address.AdditionalHouseID;
  56. logradouro = address.StreetName;
  57. numero = address.HouseID;
  58. }
  59. }
  60. //Get the client hierarchy, to find the FILIAL field and set it
  61. var query = BusinessPartnerHierarchy.Group.QueryByElements;
  62. var selectionParams = query.CreateSelectionParams();
  63. selectionParams.Add(query.BusinessPartnerInternalID, "I", "EQ", customer.InternalID.RemoveLeadingZeros());
  64. var resultData = query.Execute(selectionParams);
  65. if(resultData.Count() > 0) {
  66. var hierarchy = resultData.GetFirst();
  67. if(hierarchy.ParentGroup.Count() > 0) {
  68. var parentNode = hierarchy.ParentGroup.GetFirst();
  69. if(parentNode.BusinessPartner.Count() > 0) {
  70. var internalID = parentNode.BusinessPartner.GetFirst().BusinessPartner.InternalID;
  71. var customerMatriz = Customer.Retrieve(internalID);
  72. if(customerMatriz.IsSet()) {
  73. cnpj_matriz = customerMatriz.CurrentCommon.CNPJ;
  74. if(cnpj_matriz.IsInitial()) {
  75. raise GenericMessage.Create("E", "CNPJ da Matriz não pode ser vazio");
  76. cnpj_matriz = "0";
  77. }
  78. }
  79. else {
  80. raise GenericMessage.Create("E", "Erro ao buscar CNPJ da Matriz");
  81. }
  82. }
  83. }
  84. }
  85. id_cliente = customer.InternalID.RemoveLeadingZeros();
  86. menemonico = customer.CurrentCommon.Mnemonico;
  87. nome_curto = customer.CurrentCommon.BusinessPartnerFormattedName;
  88. var trueOrFalse = "";
  89. if(customer.CurrentCommon.ParteRelacionada)
  90. trueOrFalse = "true";
  91. else
  92. trueOrFalse = "false";
  93. parte_relacionada = trueOrFalse;
  94. if(customer.CurrentCommon.GrupoCPFL)
  95. trueOrFalse = "true";
  96. else
  97. trueOrFalse = "false";
  98. pertence_grupo_cpfl = trueOrFalse;
  99. razao_social = customer.CurrentCommon.NomeFantasia;
  100. tipo_agente = customer.CurrentCommon.Tipodeagente;
  101. //--------------------------------------- End of Fill the Request -------------------------------------------//
  102.  
  103. //----------------------------------------Sending to Boletagem----------------------------------------//
  104. if(!wasSentToBoletagem) {
  105. //------------------------------------------------- POST -----------------------------------------------------//
  106. var requestCustomer : Library::ClientPOST_WSDL.SI_CLIENTE_SYNC_OUT.Request;
  107. var responseCustomer : Library::ClientPOST_WSDL.SI_CLIENTE_SYNC_OUT.Response;
  108. var scenario = "ClientPOST_Scenario"; //Communication Scenario
  109.  
  110. requestCustomer.MT_CLIENTE_OUT.CNPJ = cnpj;
  111. requestCustomer.MT_CLIENTE_OUT.INSCRICAO_ESTADUAL = inscricao_estadual;
  112. requestCustomer.MT_CLIENTE_OUT.LOCALIDADE = localidade;
  113. requestCustomer.MT_CLIENTE_OUT.ESTADO = estado;
  114. requestCustomer.MT_CLIENTE_OUT.BAIRRO = bairro;
  115. requestCustomer.MT_CLIENTE_OUT.CEP = cep;
  116. requestCustomer.MT_CLIENTE_OUT.COMPLEMENTO = complemento;
  117. requestCustomer.MT_CLIENTE_OUT.LOGRADOURO = logradouro;
  118. requestCustomer.MT_CLIENTE_OUT.NUMERO = numero;
  119. if(cnpj_matriz.IsInitial()) //It must be sent, so it is filled with the cnpj.
  120. cnpj_matriz = cnpj;
  121. requestCustomer.MT_CLIENTE_OUT.CNPJ_MATRIZ = cnpj_matriz;
  122. requestCustomer.MT_CLIENTE_OUT.ID_CLIENTE = id_cliente;
  123. requestCustomer.MT_CLIENTE_OUT.MENEMONICO = menemonico;
  124. requestCustomer.MT_CLIENTE_OUT.NOME_CURTO = nome_curto;
  125. requestCustomer.MT_CLIENTE_OUT.PARTE_RELACIONADA = parte_relacionada;
  126. requestCustomer.MT_CLIENTE_OUT.PERTENCE_GRUPO_CPFL = pertence_grupo_cpfl;
  127. requestCustomer.MT_CLIENTE_OUT.RAZAO_SOCIAL = razao_social;
  128. requestCustomer.MT_CLIENTE_OUT.TIPO_AGENTE = tipo_agente;
  129.  
  130. responseCustomer = Library::ClientPOST_WSDL.SI_CLIENTE_SYNC_OUT(requestCustomer, "", scenario);
  131.  
  132. // error handling
  133. if (responseCustomer.IsInitial()) {
  134. raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
  135. customer.CurrentCommon.wasSentToBoletagem = false;
  136. return;
  137. }
  138. // fault messages
  139. var faultItems = responseCustomer.CommunicationFault.Item;
  140. if (faultItems.Count() > 0) {
  141. raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
  142. // do not send the complete error stack to the user. Assumption: last message is the most important on.
  143. raise GenericMessage.Create("E", "Erro message: " + faultItems.GetLast().Note);
  144. customer.CurrentCommon.wasSentToBoletagem = false;
  145. return;
  146. }
  147. if(responseCustomer.MT_CLIENTE_OUT_response.HTTP_CODE == "201 - Created") {
  148. raise GenericMessage.Create("S", "Dados enviados com sucesso para o Boletagem");
  149. raise GenericMessage.Create("S", responseCustomer.MT_CLIENTE_OUT_response.MENSAGEM_ERRO);
  150. customer.CurrentCommon.wasSentToBoletagem = true;
  151. } else {
  152. customer.CurrentCommon.wasSentToBoletagem = false;
  153. if(!responseCustomer.MT_CLIENTE_OUT_response.MENSAGEM_ERRO.IsInitial())
  154. raise GenericMessage.Create("E", responseCustomer.MT_CLIENTE_OUT_response.MENSAGEM_ERRO);
  155. }
  156.  
  157. } else {
  158. //------------------------------------------------- PUT -----------------------------------------------------//
  159. var requestCustomer : Library::ClientPUT_WSDL.SI_ALTERA_CLIENTE_SYNC_OUT.Request;
  160. var responseCustomer : Library::ClientPUT_WSDL.SI_ALTERA_CLIENTE_SYNC_OUT.Response;
  161. var scenario = "ClientPUT_Scenario"; //Communication Scenario
  162.  
  163. requestCustomer.MT_ALTERA_CLIENTE_OUT.CNPJ = cnpj;
  164. requestCustomer.MT_ALTERA_CLIENTE_OUT.INSCRICAO_ESTADUAL = inscricao_estadual;
  165. requestCustomer.MT_ALTERA_CLIENTE_OUT.LOCALIDADE = localidade;
  166. requestCustomer.MT_ALTERA_CLIENTE_OUT.ESTADO = estado;
  167. requestCustomer.MT_ALTERA_CLIENTE_OUT.BAIRRO = bairro;
  168. requestCustomer.MT_ALTERA_CLIENTE_OUT.CEP = cep;
  169. requestCustomer.MT_ALTERA_CLIENTE_OUT.COMPLEMENTO = complemento;
  170. requestCustomer.MT_ALTERA_CLIENTE_OUT.LOGRADOURO = logradouro;
  171. requestCustomer.MT_ALTERA_CLIENTE_OUT.NUMERO = numero;
  172. if(cnpj_matriz.IsInitial()) //It must be sent, so it is filled with the cnpj.
  173. cnpj_matriz = cnpj;
  174. requestCustomer.MT_ALTERA_CLIENTE_OUT.CNPJ_MATRIZ = cnpj_matriz;
  175. requestCustomer.MT_ALTERA_CLIENTE_OUT.ID_CLIENTE = id_cliente;
  176. requestCustomer.MT_ALTERA_CLIENTE_OUT.MENEMONICO = menemonico;
  177. requestCustomer.MT_ALTERA_CLIENTE_OUT.NOME_CURTO = nome_curto;
  178. requestCustomer.MT_ALTERA_CLIENTE_OUT.PARTE_RELACIONADA = parte_relacionada;
  179. requestCustomer.MT_ALTERA_CLIENTE_OUT.PERTENCE_GRUPO_CPFL = pertence_grupo_cpfl;
  180. requestCustomer.MT_ALTERA_CLIENTE_OUT.RAZAO_SOCIAL = razao_social;
  181. requestCustomer.MT_ALTERA_CLIENTE_OUT.TIPO_AGENTE = tipo_agente;
  182.  
  183. responseCustomer = Library::ClientPUT_WSDL.SI_ALTERA_CLIENTE_SYNC_OUT(requestCustomer, "", scenario);
  184.  
  185. // error handling
  186. if (responseCustomer.IsInitial()) {
  187. raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
  188. return;
  189. }
  190. // fault messages
  191. var faultItems = responseCustomer.CommunicationFault.Item;
  192. if (faultItems.Count() > 0) {
  193. raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
  194. // do not send the complete error stack to the user. Assumption: last message is the most important on.
  195. raise GenericMessage.Create("E", "Erro message: " + faultItems.GetLast().Note);
  196. return;
  197. }
  198. if(responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.Message.Contains("204")) {
  199. //Do not present any message of the client was correct inserted on the Boletagem
  200. //raise GenericMessage.Create("S", "Dados enviados com sucesso para o Boletagem");
  201. //raise GenericMessage.Create("S", responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.MessageDetail);
  202. customer.CurrentCommon.wasSentToBoletagem = true;
  203. } else {
  204. if(!responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.MessageDetail.IsInitial())
  205. raise GenericMessage.Create("E", responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.MessageDetail);
  206. }
  207. }
  208. }
  209. else {
  210. raise GenericMessage.Create("E", "Oportunidade sem cliente válido");
  211. }
  212. }
  213. else {
  214. raise GenericMessage.Create("E", "Oportunidade sem cliente");
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement