Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Add your SAP Business ByDesign scripting language implementation for:
- Business Object: Opportunity
- Node: Root
- Action: sendClientTo_Boletagem
- Note:
- - To access the elements of the business object node,
- use path expressions, for example, this.<element name>.
- - To use code completion, press CTRL+J.
- */
- import ABSL;
- import AP.Common.GDT;
- import AP.FO.BusinessPartner.Global;
- var wasSentToBoletagem : Indicator; //To know if is POST or PUT
- var cnpj : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //765 caracteres
- var inscricao_estadual : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var localidade : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var estado : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var bairro : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var cep : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var complemento : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var logradouro : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var numero : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var cnpj_matriz : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var id_cliente : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var menemonico : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var nome_curto : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var parte_relacionada : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var pertence_grupo_cpfl : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var razao_social : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- var tipo_agente : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name;
- 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
- if(this.ProspectParty.IsSet()) { //If there is a client associated to the opportunity
- var customer = Customer.Retrieve(this.ProspectParty.PartyUUID); //Get the client
- if(customer.IsSet()) {
- //------------------------------------------ Fill the Request -----------------------------------------------//
- wasSentToBoletagem = customer.CurrentCommon.wasSentToBoletagem;
- cnpj = customer.CurrentCommon.CNPJ;
- inscricao_estadual = customer.CurrentCommon.InscrioEstadual;
- //----------Addresss----------//
- if(customer.CurrentDefaultAddressInformation.IsSet()) { //If there is an address
- if(!customer.CurrentDefaultAddressInformation.CityId.IsInitial()) { //Set the id of the city that is in the address node
- localidade = customer.CurrentDefaultAddressInformation.CityId.RemoveLeadingZeros();
- estado = City.Retrieve(localidade).StateId.RemoveLeadingZeros();
- }
- if(customer.CurrentDefaultAddressInformation.Address.DefaultPostalAddressRepresentation.IsSet()) { //Set the rest of the information
- var address = customer.CurrentDefaultAddressInformation.Address.DefaultPostalAddressRepresentation;
- bairro = address.DistrictName;
- cep = address.StreetPostalCode.Replace("-", "");
- complemento = address.AdditionalHouseID;
- logradouro = address.StreetName;
- numero = address.HouseID;
- }
- }
- //Get the client hierarchy, to find the FILIAL field and set it
- var query = BusinessPartnerHierarchy.Group.QueryByElements;
- var selectionParams = query.CreateSelectionParams();
- selectionParams.Add(query.BusinessPartnerInternalID, "I", "EQ", customer.InternalID.RemoveLeadingZeros());
- var resultData = query.Execute(selectionParams);
- if(resultData.Count() > 0) {
- var hierarchy = resultData.GetFirst();
- if(hierarchy.ParentGroup.Count() > 0) {
- var parentNode = hierarchy.ParentGroup.GetFirst();
- if(parentNode.BusinessPartner.Count() > 0) {
- var internalID = parentNode.BusinessPartner.GetFirst().BusinessPartner.InternalID;
- var customerMatriz = Customer.Retrieve(internalID);
- if(customerMatriz.IsSet()) {
- cnpj_matriz = customerMatriz.CurrentCommon.CNPJ;
- if(cnpj_matriz.IsInitial()) {
- raise GenericMessage.Create("E", "CNPJ da Matriz não pode ser vazio");
- cnpj_matriz = "0";
- }
- }
- else {
- raise GenericMessage.Create("E", "Erro ao buscar CNPJ da Matriz");
- }
- }
- }
- }
- id_cliente = customer.InternalID.RemoveLeadingZeros();
- menemonico = customer.CurrentCommon.Mnemonico;
- nome_curto = customer.CurrentCommon.BusinessPartnerFormattedName;
- var trueOrFalse = "";
- if(customer.CurrentCommon.ParteRelacionada)
- trueOrFalse = "true";
- else
- trueOrFalse = "false";
- parte_relacionada = trueOrFalse;
- if(customer.CurrentCommon.GrupoCPFL)
- trueOrFalse = "true";
- else
- trueOrFalse = "false";
- pertence_grupo_cpfl = trueOrFalse;
- razao_social = customer.CurrentCommon.NomeFantasia;
- tipo_agente = customer.CurrentCommon.Tipodeagente;
- //--------------------------------------- End of Fill the Request -------------------------------------------//
- //----------------------------------------Sending to Boletagem----------------------------------------//
- if(!wasSentToBoletagem) {
- //------------------------------------------------- POST -----------------------------------------------------//
- var requestCustomer : Library::ClientPOST_WSDL.SI_CLIENTE_SYNC_OUT.Request;
- var responseCustomer : Library::ClientPOST_WSDL.SI_CLIENTE_SYNC_OUT.Response;
- var scenario = "ClientPOST_Scenario"; //Communication Scenario
- requestCustomer.MT_CLIENTE_OUT.CNPJ = cnpj;
- requestCustomer.MT_CLIENTE_OUT.INSCRICAO_ESTADUAL = inscricao_estadual;
- requestCustomer.MT_CLIENTE_OUT.LOCALIDADE = localidade;
- requestCustomer.MT_CLIENTE_OUT.ESTADO = estado;
- requestCustomer.MT_CLIENTE_OUT.BAIRRO = bairro;
- requestCustomer.MT_CLIENTE_OUT.CEP = cep;
- requestCustomer.MT_CLIENTE_OUT.COMPLEMENTO = complemento;
- requestCustomer.MT_CLIENTE_OUT.LOGRADOURO = logradouro;
- requestCustomer.MT_CLIENTE_OUT.NUMERO = numero;
- if(cnpj_matriz.IsInitial()) //It must be sent, so it is filled with the cnpj.
- cnpj_matriz = cnpj;
- requestCustomer.MT_CLIENTE_OUT.CNPJ_MATRIZ = cnpj_matriz;
- requestCustomer.MT_CLIENTE_OUT.ID_CLIENTE = id_cliente;
- requestCustomer.MT_CLIENTE_OUT.MENEMONICO = menemonico;
- requestCustomer.MT_CLIENTE_OUT.NOME_CURTO = nome_curto;
- requestCustomer.MT_CLIENTE_OUT.PARTE_RELACIONADA = parte_relacionada;
- requestCustomer.MT_CLIENTE_OUT.PERTENCE_GRUPO_CPFL = pertence_grupo_cpfl;
- requestCustomer.MT_CLIENTE_OUT.RAZAO_SOCIAL = razao_social;
- requestCustomer.MT_CLIENTE_OUT.TIPO_AGENTE = tipo_agente;
- responseCustomer = Library::ClientPOST_WSDL.SI_CLIENTE_SYNC_OUT(requestCustomer, "", scenario);
- // error handling
- if (responseCustomer.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
- customer.CurrentCommon.wasSentToBoletagem = false;
- return;
- }
- // fault messages
- var faultItems = responseCustomer.CommunicationFault.Item;
- if (faultItems.Count() > 0) {
- raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
- // do not send the complete error stack to the user. Assumption: last message is the most important on.
- raise GenericMessage.Create("E", "Erro message: " + faultItems.GetLast().Note);
- customer.CurrentCommon.wasSentToBoletagem = false;
- return;
- }
- if(responseCustomer.MT_CLIENTE_OUT_response.HTTP_CODE == "201 - Created") {
- raise GenericMessage.Create("S", "Dados enviados com sucesso para o Boletagem");
- raise GenericMessage.Create("S", responseCustomer.MT_CLIENTE_OUT_response.MENSAGEM_ERRO);
- customer.CurrentCommon.wasSentToBoletagem = true;
- } else {
- customer.CurrentCommon.wasSentToBoletagem = false;
- if(!responseCustomer.MT_CLIENTE_OUT_response.MENSAGEM_ERRO.IsInitial())
- raise GenericMessage.Create("E", responseCustomer.MT_CLIENTE_OUT_response.MENSAGEM_ERRO);
- }
- } else {
- //------------------------------------------------- PUT -----------------------------------------------------//
- var requestCustomer : Library::ClientPUT_WSDL.SI_ALTERA_CLIENTE_SYNC_OUT.Request;
- var responseCustomer : Library::ClientPUT_WSDL.SI_ALTERA_CLIENTE_SYNC_OUT.Response;
- var scenario = "ClientPUT_Scenario"; //Communication Scenario
- requestCustomer.MT_ALTERA_CLIENTE_OUT.CNPJ = cnpj;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.INSCRICAO_ESTADUAL = inscricao_estadual;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.LOCALIDADE = localidade;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.ESTADO = estado;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.BAIRRO = bairro;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.CEP = cep;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.COMPLEMENTO = complemento;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.LOGRADOURO = logradouro;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.NUMERO = numero;
- if(cnpj_matriz.IsInitial()) //It must be sent, so it is filled with the cnpj.
- cnpj_matriz = cnpj;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.CNPJ_MATRIZ = cnpj_matriz;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.ID_CLIENTE = id_cliente;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.MENEMONICO = menemonico;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.NOME_CURTO = nome_curto;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.PARTE_RELACIONADA = parte_relacionada;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.PERTENCE_GRUPO_CPFL = pertence_grupo_cpfl;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.RAZAO_SOCIAL = razao_social;
- requestCustomer.MT_ALTERA_CLIENTE_OUT.TIPO_AGENTE = tipo_agente;
- responseCustomer = Library::ClientPUT_WSDL.SI_ALTERA_CLIENTE_SYNC_OUT(requestCustomer, "", scenario);
- // error handling
- if (responseCustomer.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
- return;
- }
- // fault messages
- var faultItems = responseCustomer.CommunicationFault.Item;
- if (faultItems.Count() > 0) {
- raise GenericMessage.Create("E", "Erro ao enviar o Cliente para o Boletagem");
- // do not send the complete error stack to the user. Assumption: last message is the most important on.
- raise GenericMessage.Create("E", "Erro message: " + faultItems.GetLast().Note);
- return;
- }
- if(responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.Message.Contains("204")) {
- //Do not present any message of the client was correct inserted on the Boletagem
- //raise GenericMessage.Create("S", "Dados enviados com sucesso para o Boletagem");
- //raise GenericMessage.Create("S", responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.MessageDetail);
- customer.CurrentCommon.wasSentToBoletagem = true;
- } else {
- if(!responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.MessageDetail.IsInitial())
- raise GenericMessage.Create("E", responseCustomer.MT_ALTERA_CLIENTE_OUT_RESPONSE.MessageDetail);
- }
- }
- }
- else {
- raise GenericMessage.Create("E", "Oportunidade sem cliente válido");
- }
- }
- else {
- raise GenericMessage.Create("E", "Oportunidade sem cliente");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement