Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

LJ7114 - Permite alterar a tela padrão de digitação do NSU e do Código de Autorização na rotina Venda Assistida



Nota
titleAtenção

A versão anterior deste ponto de entrada retornava um conteúdo do tipo caractere (código do NSU). Porém, devido a necessidade de evolução e adequação do produto o mesmo agora passa a esperar o retorno do tipo array conforme especificado abaixo na documentação. Essa mudança passa a valer quando a data do fonte LOJXREC.PRW for maior ou igual à 15/12/2021.

Descrição:

Disponibilizar P.E Ponto de Entrada para permitir a substituição da tela padrão para digitação do NSU e do Código de Autorização da transação manual de Cartão (POS) na rotina Venda Assistida.

Eventos:

O ponto de entrada é executado na finalização da venda, substituindo a tela padrão de digitação do NSU e do Código de Autorização. 

Disponível a partir do release 12.1.25 

Programa Fonte:

LOJXREC

Parâmetros:

NomeTipoDescrição
ParamIxb[1]Carácter

Tipo da forma de pagamento (CC, CD, Etc..)

ParamIxb[2]CarácterId da parcela do cartão
ParamIxb[3]NuméricoValor da parcela.

Retorno:

Deve ser retornado um array com 2 posições, conforme abaixo:

NomePosiçãoTipoDescrição
cNSU01CarácterCaractere

NSU (Numero Número Sequencial Único) da transação TEFtransação de Cartão realizado na maquininha (POS).

02CaractereCódigo de Autorização da transação de Cartão realizado na maquininha (POS).
Exemplo:
Bloco de código
languagedelphi
firstline1
linenumberstrue
#INCLUDE "protheus.ch"

User Function LJ7114()


//--------------------*** E X E M P L O ***------------------------------------------------


/*/{Protheus.doc} LJ7114()


Ponto de
entrada EXEMPLO
 Entrada - Possibilita a troca da tela
padrão da NSU no momento da venda.
Usado no Venda Assistida LOJA701
@type       Ponto de Entrada
@param      PARAMIXB[1] - Caracter - Recebe o tipo da forma de pagamento ( CC, CD, Etc..)
@param      PARAMIXB[2] - Caracter - Recebe o Id da parcela do cartão
@param      PARAMIXB[3] - Numerico - Valor da parcela
@version    P12
@since    17/07/2019
@autor      Marcos Iurato Junior
@return     Retorna o numero do NSU
/*/
 padrão para digitação do NSU e Código de Autorização no momento da venda.
Usado no Venda Assistida LOJA701

@type       Ponto de Entrada
@param      PARAMIXB[1], Caractere, Recebe o tipo da forma de pagamento ( CC, CD, Etc..)
@param      PARAMIXB[2], Caractere, Recebe o Id da parcela do cartão
@param      PARAMIXB[3], Numérico, Valor da parcela
@version    P12
@since      07/12/2021
@autor      Varejo
@return     aRet , Array , Retorna um array com as informações de NSU e Código de Autorização da transação manual de cartão via POS
/*/
//------------------------------------------------------------------------------------------

Local oDlg
Local oSayNumAut
Local oSayAdmin
Local oSayInfCrt
Local oSayInfVlr
Local oNSU
Local oAdmin
Local oBtnOK
Local oBtVld
Local oBtnCancel
Local oCombo     := NIL //Objeto para seleção do POS que irá realizar a venda
Local aPOS       := {}    //Array com todos os POS cadastrados no sistema
Local cNSU       :=

User Function LJ7114()
Local oDlg			:= Nil
Local aRet 			:= {}
Local cNSU			:= Space(TamSx3("E1_DOCTEF")[1])
//Tratamento para pegar o tamanho correto do campo E1_DOCTEF
Local cDesc      := "PONTO DE ENTRADA LJ7114 - Informações da Transação"
Local cLinha1    := "" //Informações da primeira linha da tela
Local cLinha2    := "" //Informações da segunda linha da tela
Local cCombo     := ""    //conteudo selecioado no combo
Local cTexto     := "" //Para alteração do conteudo de exibição quando acionado o botão do MFe
Local nInObj     := 0
Local lTemInfo   := .F.
// Aqui validamos a informação recebida no PARAMIXB[1] o tipo da Forma de Pagto.
If !Empty(PARAMIXB[1])
// Se não estiver vazia, escrevemos a primeira linha da tela conforme informação recebida pelo PARAMIXB[1]
// Se for CC, escrevemos: Teste Cartao Crédito / Se for CD, escrevemos: Teste Cartao Débito
    If AllTrim(PARAMIXB[1]) == "CC" 
        cLinha1 := "TESTE Cartao Crédito"
    ElseIf AllTrim(PARAMIXB[1]) == "CD"
        cLinha1 := "TESTE Cartao Débito"
    EndIf
    
// Aqui validamos a informação recebida no PARAMIXB[2]
// Se não estiver vazia, complementamos a escrita na primeira linha da tela com o Id da parcela
If !Empty(AllTrim(PARAMIXB[2]))
        cLinha1 += "- ID " + PARAMIXB[2]
    EndIf
    
// Aqui validamos a informação recebida no PARAMIXB[3]
// Se o PARAMIXB[3] for maior que 0, escrevemos na segunda linha da tela o valor da parcela
    If PARAMIXB[3] > 0
        cLinha2 += " Valor : " + AllTrim( Str( PARAMIXB[3], 14, 2 ) )
    EndIf
    
    lTemInfo := .T.
EndIf
// Inicializo o objeto responsável pela criação da tela
// PONTO DE ENTRADA LJ7114 - Informações da Transação
oDlg := MSDIALOG():Create()
    oDlg:cName := "oDlg"
    oDlg:cCaption := cDesc
    oDlg:nLeft := 0
    oDlg:nTop := 0
    oDlg:nWidth := 370
    oDlg:nHeight := 190
    oDlg:lShowHint := .F.
    oDlg:lCentered := .T.
    
// Caso houve informações para preenchimento nas linhas 1 e 2, mostramos na tela
    If lTemInfo
        
//Informações do Cartão - LINHA 1
        oSayInfCrt:= TSAY():Create(oDlg)
        oSayInfCrt:cName := "oSayInfCrt"
        oSayInfCrt:cCaption := cLinha1
        oSayInfCrt:nLeft := 10
        oSayInfCrt:nTop := 17
        oSayInfCrt:nWidth := 230
        oSayInfCrt:nHeight := 16
        oSayInfCrt:lShowHint := .F.
        oSayInfCrt:lReadOnly := .F.
        oSayInfCrt:Align := 0
        oSayInfCrt:lVisibleControl := .T.
        oSayInfCrt:lWordWrap := .F.
        oSayInfCrt:lTransparent := .F.
        
        //Valor - LINHA 2
        oSayInfVlr:= TSAY():Create(oDlg)
        oSayInfVlr:cName := "oSayInfVlr"
        oSayInfVlr:cCaption := cLinha2
        oSayInfVlr:nLeft := 10
        oSayInfVlr:nTop := 37
        oSayInfVlr:nWidth := 230
        oSayInfVlr:nHeight := 16
        oSayInfVlr:lShowHint := .F.
        oSayInfVlr:lReadOnly := .F.
        oSayInfVlr:Align := 0
        oSayInfVlr:lVisibleControl := .T.
        oSayInfVlr:lWordWrap := .F.
        oSayInfVlr:lTransparent := .F.
        
        nInObj := 40
    EndIf
    
// Código de Autorização da Transação(NSU):
    oSayNumAut:= TSAY():Create(oDlg)
    oSayNumAut:cName := "oSayNumAut"
    oSayNumAut:cCaption := "Código de Autorização da Transação(NSU):"
    oSayNumAut:nLeft := 10
    oSayNumAut:nTop := 20 + nInObj
    oSayNumAut:nWidth := 230
    oSayNumAut:nHeight := 16
    oSayNumAut:lShowHint := .F.
    oSayNumAut:lReadOnly := .F.
    oSayNumAut:Align := 0
    oSayNumAut:lVisibleControl := .T.
    oSayNumAut:lWordWrap := .F.
    oSayNumAut:lTransparent := .F.
// Get para digitação do NSU
    oNSU:= TGET():Create(oDlg)
    oNSU:cName := "oNSU"
    oNSU:nLeft := 240
    oNSU:nTop := 17 + nInObj
    oNSU:nWidth := 100
    oNSU:nHeight := 20
    oNSU:lShowHint := .F.
    oNSU:Align := 0
    oNSU:cVariable := "cNSU"
    oNSU:bSetGet := {|u| If(PCount()>0,cNSU:=u,cNSU) }
    oNSU:lVisibleControl := .T.
    oNSU:lPassword := .F.
    oNSU:Picture := "@!"
    oNSU:lHasButton := .F.
 //BOTÃO OK para confirmar a tela
    oBtnOK:= TButton():Create(oDlg)
    oBtnOK:cName := "oBtnOK"
    oBtnOK:cCaption := "OK" //"OK"
    oBtnOK:nLeft := 240
    oBtnOK:nTop := 110
    oBtnOK:nWidth := 90
    oBtnOK:nHeight := 25
    oBtnOK:lShowHint := .F.
    oBtnOK:lReadOnly := .F.
    oBtnOK:Align := 0
    // Aqui poderá validar a informação digitada antes do encerramento da operação.
    //Ex.: oBtnOK:bAction := {|| lRet := .T., oDlg:End() }
    oBtnOK:bAction := {|| oDlg:End() }     oDlg:lEscClose := .F.
oDlg:Activate()
Return(cNSU)

Local cAUTORIZ		:= Space(TamSx3("E1_CARTAUT")[1])
Local cTipoCart		:= ""
Local lTemInfo		:= .F.
Local oGroup 		:= Nil
Local oFontBold 	:= TFont():New(, , -11, .T., .T.)
Local cIdCard 		:= ""
Local cValorCard	:= ""
Local aParams       := PARAMIXB

If Len(aParams) > 0
    If AllTrim(aParams[1]) == "CC"
        cTipoCart := "Cartao de Crédito"
    ElseIf AllTrim(aParams[1]) == "CD"
        cTipoCart := "Cartao de Débito"
    EndIf
    
    If !Empty(AllTrim(aParams[2]))
        cIdCard := " ID: " + aParams[2] 
    EndIf
    
    If aParams[3] > 0
        cValorCard := AllTrim(Transform(aParams[3],PesqPict("SL1","L1_VLRTOT")))
    EndIf
    
    lTemInfo := .T.
EndIf

oDlg 	:= MSDialog():New(0,0,200,450,"Informações da Transação Manual (POS)",,,,,,,,,.T.)
oGroup 	:= TGroup():New(002, 002, 098, 226,"",oDlg,,,.T.)

If lTemInfo
    //Tipo de Cartão 
    TSay():New(005,005,{||cTipoCart},oDlg,,oFontBold,,,,.T.,,,230,16)
    //ID do Cartão
    TSay():New(005,075,{||cIdCard},oDlg,,oFontBold,,,,.T.,CLR_HRED,,230,16)
    
    //Valor
    TSay():New(015,005,{||"Valor:"},oDlg,,oFontBold,,,,.T.,,,230,16)
    TSay():New(015,025,{||cValorCard},oDlg,,oFontBold,,,,.T.,CLR_HRED,,230,16)
EndIf

//"Código da Transação (NSU):"
TSay():New(035,005,{||"Código da Transação (NSU):"},oDlg,,,,,,.T.,CLR_BLACK,,230,16)
oGetNSU := TGet():New(033,077,bSetGet(cNSU),oDlg,065,009,"@!",,,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cNSU,,,, )
oGetNSU:cSx1Hlp:="L4_NSUTEF"

//"Código de Autorização:"
TSay():New(048,005,{||"Código de Autorização:"},oDlg,,,,,,.T.,CLR_BLACK,,230,16)
oGetAutori := TGet():New(046,077,bSetGet(cAUTORIZ),oDlg,065,009,"@!",,,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cAUTORIZ,,,,,,,,,,,)
oGetAutori:cSx1Hlp:="L4_AUTORIZ"

//Botão "OK"
TButton():New( 080, 091, "OK", oDlg, {||oDlg:End()}, 045, 015,,,.F.,.T.,.F.,,.F.,,,.F. )

oDlg:lEscClose := .F.
oDlg:Activate()

cNsu 	 := AllTrim(cNsu)
cAUTORIZ := AllTrim(cAUTORIZ)

If lTemInfo
	aParams[4] := cNSU
	If Len(aParams) >= 5
		aParams[5] := cAUTORIZ
	EndIf
EndIf

aRet := {cNSU, cAUTORIZ}

Return aRet