Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import ABSL;
- import AP.Common.GDT;
- import AP.FO.BusinessPartner.Global;
- var idOpp : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //ID Oportunidade //765 caracteres
- var uuidOpp : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //UUID Oportunidade
- var idProduto : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //ID Produto
- var nomeOpp : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //Nome da Oportunidade
- var operacao : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //Operação
- var status : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //Status
- var vendedor : LANGUAGEINDEPENDENT_ENCRYPTED_EXTENDED_Name; //Vendedor
- //------------------------------------------ Fill the Request -----------------------------------------------//
- idOpp = this.ID.content.RemoveLeadingZeros();
- uuidOpp = this.UUID.content.ToString();
- nomeOpp = this.Name.content;
- if(this.Item.Count() == 1) { //Check the product quantity, it must be one
- var itemProduct = this.Item.GetFirst().ItemProduct;
- if(itemProduct.IsSet()) {
- idProduto = itemProduct.ProductKey.ProductID.content;
- }
- else {
- raise GenericMessage.Create("E", "Erro ao buscar ID do produto");
- this.allowSave = false;
- return;
- }
- }
- else {
- raise GenericMessage.Create("E", "A Oportunidade deve conter 1 produto cadastrado");
- this.allowSave = false;
- return;
- }
- operacao = this.Operao;
- 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()){
- vendedor = customer.InternalID.RemoveLeadingZeros();
- }
- }
- status = this.Status.LifeCycleStatusCode;
- //--------------------------------------- End of Fill the Request --------------------------------------------//
- //------------------------------------------- Request GET ----------------------------------------------------//
- //To check if the opportunity is on Boletagem
- var requestGET : Library::OppGET_WSDL.SI_BUSCA_OPORTUNIDADE_OUT.Request; //It needs to get the opportunity first and them send all the information exactly the same as in Boletagem
- var responseGET : Library::OppGET_WSDL.SI_BUSCA_OPORTUNIDADE_OUT.Response;
- var scenarioGET = "OppGET_Scenario";
- var wasSentBoletagem = false;
- requestGET.MT_BUSCA_OPORTUNIDADE_OUT.ID = this.ID.content.RemoveLeadingZeros();
- responseGET = Library::OppGET_WSDL.SI_BUSCA_OPORTUNIDADE_OUT(requestGET, "", scenarioGET);
- if (responseGET.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar a Oportunidade para o Boletagem");
- this.allowSave = false;
- return;
- } else {
- // fault messages
- var faultItems = responseGET.CommunicationFault.Item;
- var severity;
- if (faultItems.Count() > 0) {
- // do not send the complete error stack to the user. Assumption: last message is the most important on.
- raise GenericMessage.Create("E", "Erro: " + faultItems.GetLast().Note);
- this.allowSave = false;
- return;
- }
- }
- if(responseGET.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.LOG.IsInitial() && !responseGET.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.IsInitial()) {
- wasSentBoletagem = true;
- }
- //--------------------------------------------- Send the opportunity ---------------------------------------------------//
- if(!wasSentBoletagem) {
- var requestOpp : Library::OppPOST_WSDL.SI_OPORTUNIDADE_SYNC_OUT.Request;
- var responseOpp : Library::OppPOST_WSDL.SI_OPORTUNIDADE_SYNC_OUT.Response;
- var scenario = "OppPOST_Scenario";
- requestOpp.MT_OPORTUNIDADE_OUT.ID_OPORTUNIDADE = idOpp;
- requestOpp.MT_OPORTUNIDADE_OUT.UUID_OPORTUNIDADE = uuidOpp;
- requestOpp.MT_OPORTUNIDADE_OUT.NOME_OPORTUNIDADE = nomeOpp;
- requestOpp.MT_OPORTUNIDADE_OUT.ID_PRODUTO = idProduto;
- requestOpp.MT_OPORTUNIDADE_OUT.OPERACAO = operacao;
- requestOpp.MT_OPORTUNIDADE_OUT.VENDEDOR = vendedor;
- requestOpp.MT_OPORTUNIDADE_OUT.STATUS = status;
- responseOpp = Library::OppPOST_WSDL.SI_OPORTUNIDADE_SYNC_OUT(requestOpp, "", scenario);
- // error handling // no info at all
- if (responseOpp.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar a Oportunidade para o Boletagem");
- this.allowSave = false;
- } else {
- // fault messages
- var faultItems = responseOpp.CommunicationFault.Item;
- var severity;
- if (faultItems.Count() > 0) {
- // do not send the complete error stack to the user. Assumption: last message is the most important on.
- raise GenericMessage.Create("E", "Erro: " + faultItems.GetLast().Note);
- this.allowSave = false;
- }
- }
- if(this.allowSave) {
- if(responseOpp.MT_OPORTUNIDADE_OUT_RESPONSE.Message == "201 - Created") {
- raise GenericMessage.Create("S", responseOpp.MT_OPORTUNIDADE_OUT_RESPONSE.MessageDetail);
- this.wasSentToBoletagemOpp = true;
- }
- else {
- raise GenericMessage.Create("E", responseOpp.MT_OPORTUNIDADE_OUT_RESPONSE.MessageDetail);
- this.allowSave = false;
- }
- }
- } else {
- var requestOpp : Library::OppPUT_WSDL.SI_ALTERA_OPORTUNIDADE_SYNC_OUT.Request;
- var responseOpp : Library::OppPUT_WSDL.SI_ALTERA_OPORTUNIDADE_SYNC_OUT.Response;
- var scenario = "OppPUT_Scenario";
- if (this.Status.LifeCycleStatusCode == "3" || this.Status.LifeCycleStatusCode == "4" || this.Status.LifeCycleStatusCode == "5") { //When is Stopped, Won and Lost
- var request : Library::OppGET_WSDL.SI_BUSCA_OPORTUNIDADE_OUT.Request; //It needs to get the opportunity first and them send all the information exactly the same as in Boletagem
- var response : Library::OppGET_WSDL.SI_BUSCA_OPORTUNIDADE_OUT.Response;
- var scenario_get = "OppGET_Scenario";
- request.MT_BUSCA_OPORTUNIDADE_OUT.ID = this.ID.content.RemoveLeadingZeros();
- response = Library::OppGET_WSDL.SI_BUSCA_OPORTUNIDADE_OUT(request, "", scenario_get);
- // error handling // no info at all
- if (response.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar a Oportunidade para o Boletagem");
- this.allowSave = false;
- return;
- } else {
- // fault messages
- var faultItems = response.CommunicationFault.Item;
- var severity;
- if (faultItems.Count() > 0) {
- // do not send the complete error stack to the user. Assumption: last message is the most important on.
- raise GenericMessage.Create("E", "Erro: " + faultItems.GetLast().Note);
- this.allowSave = false;
- return;
- }
- }
- if(response.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar a Oportunidade para o Boletagem");
- this.allowSave = false;
- return;
- }
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.ID_OPORTUNIDADE = idOpp;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.STATUS = status; //Only the status is different
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.UUID_OPORTUNIDADE = response.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.UUID;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.NOME_OPORTUNIDADE = response.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.NOME;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.ID_PRODUTO = response.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.ID_PRODUTO;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.OPERACAO = response.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.TIPO_OPERACAO;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.VENDEDOR = response.MT_BUSCA_OPORTUNIDADE_OUT_RESPONSE.OPORTUNIDADE.ID_EMPRESA;
- } else {
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.ID_OPORTUNIDADE = idOpp;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.UUID_OPORTUNIDADE = uuidOpp;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.NOME_OPORTUNIDADE = nomeOpp;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.ID_PRODUTO = idProduto;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.OPERACAO = operacao;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.VENDEDOR = vendedor;
- requestOpp.MT_ALTERA_OPORTUNIDADE_OUT.STATUS = status;
- }
- responseOpp = Library::OppPUT_WSDL.SI_ALTERA_OPORTUNIDADE_SYNC_OUT(requestOpp, "", scenario);
- // error handling // no info at all
- if (responseOpp.IsInitial()) {
- raise GenericMessage.Create("E", "Erro ao enviar o Oportunidade para o Boletagem");
- this.allowSave = false;
- } else {
- // fault messages
- var faultItems = responseOpp.CommunicationFault.Item;
- var severity;
- if (faultItems.Count() > 0) {
- // do not send the complete error stack to the user. Assumption: last message is the most important on.
- raise GenericMessage.Create("E", "Erro: " + faultItems.GetLast().Note);
- this.allowSave = false;
- }
- }
- if(this.allowSave) {
- if(responseOpp.MT_ALTERA_OPORTUNIDADE_OUT_RESPONSE.Message.Contains("204")) {
- //Does not need to show this message
- //raise GenericMessage.Create("S", responseOpp.MT_ALTERA_OPORTUNIDADE_OUT_RESPONSE.MessageDetail);
- }
- else {
- raise GenericMessage.Create("E", responseOpp.MT_ALTERA_OPORTUNIDADE_OUT_RESPONSE.MessageDetail);
- this.allowSave = false;
- }
- }
- }
Add Comment
Please, Sign In to add comment