Skip to content

Instantly share code, notes, and snippets.

@danielAlbuquerque
Last active August 1, 2019 21:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielAlbuquerque/023dce291311143facf92a5b76dd786a to your computer and use it in GitHub Desktop.
Save danielAlbuquerque/023dce291311143facf92a5b76dd786a to your computer and use it in GitHub Desktop.
//----------------------------------------------------
// Verifico a necessidade de criar/atualizar cliente
//----------------------------------------------------
dbSelectArea("SA1")
SA1->( dbSetOrder(3) )
lInsere := !SA1->( MsSeek( xFilial('SA1') + oPedido['cliente']['cpf_cnpj'] ) )
nRec := ::updCustomer(lInsere, oPedido)
// ------------------------------------------------------------------
// Desc: Metodo responsavel por criar ou atualizar o cliente
// baseado no CGC
// Params: lNew: logico | indica se sera inclusao ou alteracao
// Dev: Daniel Albuquerque
// Data: 28/11/2018
// ------------------------------------------------------------------
Method updCustomer(lNew, oPedido) CLASS PedVendaRepository
Local aArea := GetArea()
Local aDadosCli := {}
Local cTpPessoa := iif(Len(oPedido['cliente']['cpf_cnpj'])== 11, 'F', 'J')
Local cTpCli := 'F'
Local cCodSA1, cArqLog, cErro
Local nRec := 0
Private lMsErroAuto := .F.
Private lMsHelpAuto := .F.
If !ExistDir('\log_cli')
MakeDir('\log_cli')
EndIf
// opcao da rotina automatica
cCodSA1 := iif(lNew, ::getCodCli(), SA1->A1_COD)
::nOP := iif(lNew, 3, 4)
// Codigo
Aadd(aDadosCli, {'A1_COD', cCodSA1 , Nil} )
// Dados gerais
Aadd(aDadosCli, {'A1_FILIAL', xFilial('SA1'), Nil} )
Aadd(aDadosCli, {'A1_LOJA', '01', Nil} )
Aadd(aDadosCli, {'A1_CGC', trataTxt(oPedido['cliente']['cpf_cnpj']), Nil} )
Aadd(aDadosCli, {'A1_NOME' , trataTxt(oPedido['cliente']['nome']), Nil} )
Aadd(aDadosCli, {'A1_NREDUZ', trataTxt(oPedido['cliente']['nome']), Nil} )
Aadd(aDadosCli, {'A1_PESSOA', cTpPessoa, Nil} )
Aadd(aDadosCli, {'A1_TIPO', cTpCli, Nil} )
Aadd(aDadosCli, {'A1_EMAIL', trataTxt(oPedido['cliente']['email']), Nil} )
Aadd(aDadosCli, {'A1_GRPVEN', '000002', Nil} )
// Endereco
Aadd(aDadosCli, {'A1_PFISICA', trataTxt(oPedido['dados_entrega']['rg']), Nil})
Aadd(aDadosCli, {'A1_BAIRRO', trataTxt(oPedido['dados_entrega']['bairro']), Nil})
Aadd(aDadosCli, {'A1_END', trataTxt(oPedido['dados_entrega']['endereco']), Nil})
Aadd(aDadosCli, {'A1_CEP', trataTxt(oPedido['dados_entrega']['cep']), Nil})
Aadd(aDadosCli, {'A1_EST', trataTxt(oPedido['dados_entrega']['estado']), Nil})
Aadd(aDadosCli, {'A1_MUN', trataTxt(oPedido['dados_entrega']['cidade']), Nil})
Aadd(aDadosCli, {'A1_COD_MUN', getCodCidade(trataTxt(oPedido['dados_entrega']['estado']), trataTxt(oPedido['dados_entrega']['cidade'])), Nil})
Aadd(aDadosCli, {'A1_TEL', trataTxt(oPedido['cliente']['telefone_celular']), Nil})
Aadd(aDadosCli, {'A1_COMPLEM', trataTxt(oPedido['dados_entrega']['complemento']), Nil})
// pasta fiscais
Aadd(aDadosCli, {'A1_ENDENT', trataTxt(oPedido['dados_entrega']['endereco']), Nil})
Aadd(aDadosCli, {'A1_COMPENT', trataTxt(oPedido['dados_entrega']['complemento']), Nil})
Aadd(aDadosCli, {'A1_BAIRROE', trataTxt(oPedido['dados_entrega']['bairro']), Nil})
// Execucao da rotina
Conout('#> PROCESSANDO CLIENTE: ' + trataTxt(oPedido['cliente']['nome']))
MsExecAuto({|x,y| MATA030(x,y)}, aDadosCli, ::nOP)
If lMsErroAuto
::cMsgError := U_FORMTERR( MostraErro('\log_ped', oPedido['cliente']['cpf_cnpj'] + ' : ' +SubStr(Time(),1,5 ) + '.log') )
::lTudoOK := .F.
::nCodError := 400
::cLocErro := "ATUALIZACAO CLIENTE"
::cTpErro := "EXECAUTO MATA030"
::cPayload := oPedido:toJson()
RollBackSX8()
conout("###### ERROR #######")
conout(::cMsgError)
conout(::nCodError)
conout("#############")
Else
nRec := SA1->(RECNO())
::lTudoOK := .T.
ConfirmSX8()
EndIf
RestArea(aArea)
Return nRec
// ------------------------------------------------------------------
// Desc: Metodo responsavel por criar um novo codigo para o cliente
// Dev: Daniel Albuquerque
// Data: 28/11/2018
// ------------------------------------------------------------------
Method getCodCli() CLASS PedVendaRepository
Local cCod := GetSX8Num("SA1", "A1_COD")
Local aArea := GetArea()
SA1->( DbSetOrder(1) )
While SA1->( DbSeek( xFilial("SA1") + cCod ) )
cCod := GetSX8Num("SA1", "A1_COD")
EndDo
RestArea(aArea)
Return cCod
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment