Árvore de páginas

GFE11501 – Permite realizar validações específicas durante o processamento do CT-e

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Logística

Módulo:

SIGAGFE

Ponto de Entrada - GFE11501


Descrição:

Permite realizar validações específicas durante o processamento do CT-e

Localização:

No processamento do Conhecimento.

Programa Fonte:

GFEA115A - Importação de Conhecimentos/EDI (SIGAGFE)

Parâmetros:

Não se aplica

Retorno:

Nome

Tipo

Descrição

Obrigatório

aRet

Array

1ª posição indica se deve gravar o erro de processamento

2ª posição indica a descrição que deve ser gravada no campo EDIMSG.

Sim

 

Exemplo: GFEA1155
#INCLUDE "PROTHEUS.CH"
  
User Function GFE11501()

    Local aRet      := {.F.,""}
    Local cAliasGWU := Nil
    Local cEmisDf, cTpDf, cWhere, cFilDc, cTpDc, cEmisDc, cSerDc, cNrDc, cNrDf

    cEmisDf := GXG->GXG_EMISDF
    cTpDf   := GXG->GXG_TPDF
    cNrDf   := GXG->GXG_NRDF

    GXH->( dbSetOrder(1) )
    GXH->( msSeek(GXG->GXG_FILIAL + GXG->GXG_NRIMP) )
    While !GXH->(Eof()) .AND. ;
            GXH->GXH_FILIAL == GXG->GXG_FILIAL .AND. ;
            GXH->GXH_NRIMP  == GXG->GXG_NRIMP

        cFilDc  := GXH->GXH_FILDC
        cTpDc   := GXH->GXH_TPDC
        cEmisDc := GXH->GXH_EMISDC
        cSerDc  := GXH->GXH_SERDC
        cNrDc   := GXH->GXH_NRDC        

        If cTpDf $ '1|6'

            If cTpDf == '1'
                cWhere += " AND GWU.GWU_SEQ = '01'"
            Else
                cWhere += " AND GWU.GWU_SEQ > '01'"
            EndIf
            
            cWhere := "%"+cWhere+"%"

            cAliasGWU := GetNextAlias()
            BeginSql Alias cAliasGWU
                SELECT GW1.GW1_SERDC,
                        GW1.GW1_NRDC,
                        GWU.GWU_DTENT
                FROM %Table:GW1% GW1
                INNER JOIN %Table:GWU% GWU
                ON GWU.GWU_FILIAL = GW1.GW1_FILIAL
                AND GWU.GWU_CDTPDC = GW1.GW1_CDTPDC
                AND GWU.GWU_EMISDC = GW1.GW1_EMISDC
                AND GWU.GWU_SERDC = GW1.GW1_SERDC
                AND GWU.GWU_NRDC = GW1.GW1_NRDC
                AND GWU.GWU_CDTRP IN (%Exp:GFEGetEmRz(cEmisDf)%)
                AND GWU.GWU_DTENT <> ' '
                %Exp:cWhere%
                AND GWU.%NotDel%
                INNER JOIN %Table:GV5% GV5
                ON GV5.GV5_FILIAL = %xFilial:GV5%
                AND GV5.GV5_CDTPDC = GW1.GW1_CDTPDC
                //AND GV5.GV5_SENTID IN ('1','2','3')
                AND GV5.%NotDel%
                WHERE GW1.GW1_FILIAL = %Exp:IIf(Empty(cFilDc),xFilial("GW4"),cFilDc)%
                AND GW1.GW1_CDTPDC = %Exp:cTpDc%
                AND GW1.GW1_EMISDC = %Exp:cEmisDc%
                AND GW1.GW1_SERDC = %Exp:cSerDc%
                AND GW1.GW1_NRDC = %Exp:cNrDc%
                AND GW1.%NotDel%
            EndSql
            If (cAliasGWU)->(Eof())

                cMsg := "Trecho do documento de carga número: "+AllTrim(cNrDc)+" série: "+AllTrim(cSerDc)+" correspondente ao documento de frete número: "+Alltrim(cNrDf)+" não possui data de entrega informada;"
                cMsg += "emitente: "+AllTrim(cEmisDf)+" exige registro da data de entrega."

                aRet := {.T., cMsg} 
            EndIf
            (cAliasGWU)->(dbCloseArea())
        Endif

        DbSelectArea('GXH')
        GXH->( dbSkip() )
    EndDo  

Return aRet