Modelo de Tela MVC sem relação com dicionário de Dados

tela_mvc.jpg

#Include 'Protheus.ch'
#Include 'FWEditPanel.ch'
#INCLUDE "FWMVCDEF.CH"
#Include 'Parmtype.ch'

*****************************************************************************
*+-------------------------------------------------------------------------+*
*|Funcao      | CQG003_MVC  | Autor | Jader Berto                         |*
*+------------+------------------------------------------------------------+*
*|Data        | 23.07.2018                                                 |*
*+------------+------------------------------------------------------------+*
*|Descricao   |Impressão de Etiquetas de EPI em MVC                        |*
*+------------+------------------------------------------------------------+*
*|Solicitante |                                                            |*
*+------------+------------------------------------------------------------+*
*|Partida     | Menú Miscelânea em Compras                                 |*
*+------------+------------------------------------------------------------+*
*|Arquivos    |                                                            |*
*+------------+------------------------------------------------------------+*
*|             ATUALIZACOES SOFRIDAS DESDE A CONSTRUCAO INICIAL            |*
*+-------------------------------------------------------------------------+*
*| Programador       |   Data   | Motivo da alteracao                      |*
*+-------------------+----------+------------------------------------------+*
*|                   |          |                                          |*
*+-------------------+----------+------------------------------------------+*
*****************************************************************************

User Function CQG003_MVC()

        FWExecView("Titulo","CQG003_MVC",3,,{|| .T.})

Return

Static Function ModelDef()
Local oModel
Local oStr        := getModelStruct()
Local oStrZB4  := getModelZB4()

    oModel := MPFormModel():New('MLDNOSXS',,,{|oModel| Commit(oModel) })
    oModel:SetDescription('Impressão de Etiquetas')

    oModel:AddFields("MASTER",,oStr,,,)
    oModel:getModel("MASTER"):SetDescription("DADOS")
    oModel:SetPrimaryKey({})


    oModel:AddGrid( 'DETAIL', 'MASTER', oStrZB4, ,  , /*bPreVal*/, , /*BLoad*/ )
    oModel:getModel("DETAIL"):SetDescription("DETALHE")


Return oModel

static function getModelStruct()
Local oStruct := FWFormModelStruct():New()

    oStruct:AddField('Nota Fiscal'    ,'Nota Fiscal'  , 'F1_DOC'     , 'C'  , TamSx3("F1_DOC")[1]          , 0,                                                                              , , {}, .T., , .F., .T., .T., , )
    oStruct:AddField('Série'        ,'Série'         , 'F1_SERIE'   , 'C'  , TamSx3("F1_SERIE")[1]     , 0,                                                                            , , {}, .T., , .F., .T., .T., , )
    oStruct:AddField('Fornecedor'   ,'Fornecedor'   , 'F1_FORNECE' , 'C'  , TamSx3("F1_FORNECE")[1]   , 0, { |oMdl| getForn(oMdl), .T. }                                           , , {}, .T., , .F., .T., .T., , )
    oStruct:AddField('Loja'         ,'Loja'         , 'F1_LOJA'    , 'C'  , TamSx3("F1_LOJA")[1]      , 0,                                                                            , , {}, .T., , .F., .T., .T., , )
    oStruct:AddField('CONSULTAR'    ,'CONSULTAR'    , 'BT_CONSULTA', 'BT' , 30                          , 0, { || MsgRun("Buscando Nota Fiscal","Processando",{|| getNOTA() }), .T. }, , {}, .F., , .F., .T., .T., , )

return oStruct

Static Function getNota()
Local oModel     := FWModelActive()
Local oView     := FWViewActive()
Local oModelZB4 := oModel:GetModel( 'DETAIL' )
Local cNota      := oModel:GetValue( 'MASTER', 'F1_DOC' )
Local cSerie     := oModel:GetValue( 'MASTER', 'F1_SERIE' )
Local cForn      := oModel:GetValue( 'MASTER', 'F1_FORNECE' )
Local cLoja      := oModel:GetValue( 'MASTER', 'F1_LOJA' )
Local cChave
Local n1 := 0

cChave := xFilial("SD1")+PADR(cNota,TamSx3("F1_DOC")[1])+PADR(cSerie,TamSx3("F1_SERIE")[1])+PADR(cForn,TamSx3("F1_FORNECE")[1])+PADR(cLoja,TamSx3("F1_LOJA")[1])

    DbSelectArea("SD1")
    SD1->(DbSetOrder(1))

    oModelZB4:ClearData(.F.,.T.)

    If SD1->(DbSeek(cChave))

        While SD1->(!Eof()) .and. SD1->(D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA) == cChave
            n1++
            oModelZB4:AddLine()
            oModelZB4:SetValue('D1_ITEM'   , SD1->D1_ITEM) 
            oModelZB4:SetValue('D1_COD'    , SD1->D1_COD) 
            oModelZB4:SetValue('B1_DESC'   , POSICIONE("SB1",1,xFilial("SB1")+SD1->D1_COD,"B1_DESC"))  

        SD1->(DbSkip())
        End
        oModelZB4:SetMaxLine(n1)
        oModelZB4:GoLine(1)
        oModelZB4:SetNoDeleteLine(.T.)
    Else
        Alert("Nenhuma Nota Encontrada.")
        Return .F.
    EndIf



    oView:Refresh()

Return .T.

static function getModelZB4()
Local oStruct := FWFormModelStruct():New()

    oStruct:AddField('OK'                   ,'OK'                      , 'D1_OK'        , 'L'  , 4                            , 0,                                   , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Ítem'                   ,'Ítem'                , 'D1_ITEM'      , 'C'  , TamSx3("D1_ITEM")[1]        , 0,                                   , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Código'               ,'Código'               , 'D1_COD'       , 'C'  , TamSx3("D1_COD")[1]         , 0,                                 , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Descrição'           ,'Descrição'              , 'B1_DESC'      , 'C'  , TamSx3("B1_DESC")[1]        , 0,                                 , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Certificado de A'    ,'Certificado de A'    , 'ZB4_CODCA'    , 'C'  , TamSx3("ZB4_CODCA")[1]      , 0,                                 , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Dt.Validade'           ,'Dt.Validade'          , 'ZB4_DTVALI'   , 'D'  , TamSx3("ZB4_DTVALI")[1]     , 0,                                 , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Lote C.A'              ,'Lote C.A'              , 'ZB4_LOTECA'   , 'C'  , TamSx3("ZB4_LOTECA")[1]     , 0,                                 , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Marca'               ,'Marca'                 , 'ZB4_MARCA'    , 'C'  , TamSx3("ZB4_MARCA")[1]      , 0,                                 , , {}, .F., , .F., .F., .F., , )
    oStruct:AddField('Identifica Lote'       ,'Identifica Lote'     , 'ZB4_LOTERM'   , 'C'  , TamSx3("ZB4_LOTERM")[1]     , 0,                                 , , {}, .F., , .F., .F., .F., , )



return oStruct

Static Function ViewDef()
Local oView
Local oModel     := ModelDef() 
Local oStr        := getViewStruct()
Local oStrZB4    := getViewZB4()

    oView := FWFormView():New()
    oView:SetModel(oModel)

    oView:AddField('FORM1' , oStr,'MASTER' ) 
    oView:CreateHorizontalBox( 'SUPERIOR', 15)
    oView:SetOwnerView('FORM1','SUPERIOR')
    oView:SetViewProperty('FORM1' , 'SETLAYOUT' , {FF_LAYOUT_HORZ_DESCR_LEFT,3} ) 
    oView:EnableTitleView('FORM1' , 'Dados da Nota Fiscal' ) 

    /*
    oView:AddField('FORM2' , oStrZB4,'MASTER' ) 
    oView:CreateHorizontalBox( 'BOXFORM2', 85)
    oView:SetOwnerView('FORM2','BOXFORM2')
    oView:SetViewProperty('FORM2' , 'SETLAYOUT' , {FF_LAYOUT_HORZ_DESCR_LEFT,3} ) 
    oView:EnableTitleView('FORM2' , 'Ítens Encontrados' )     
    */

    oView:AddGrid(  'FORM2',  oStrZB4,  'DETAIL' )
    oView:CreateHorizontalBox( 'INFERIOR', 85)
    oView:SetOwnerView('FORM2','INFERIOR')
    oView:EnableTitleView('FORM2' , 'Ítens Encontrados' )     


Return oView

static function getViewStruct()
Local oStruct := FWFormViewStruct():New()
    oStruct:AddField( 'F1_DOC'        ,'1','Nota Fiscal','Nota Fiscal',, 'Get' ,,,"SF102",,,,,,,,, )
    oStruct:AddField( 'F1_SERIE'    ,'2','Série'      ,'Série'        ,, 'Get' ,,,       ,,,,,,,,, )
    oStruct:AddField( 'F1_FORNECE'    ,'3','Fornecedor' ,'Fornecedor'    ,, 'Get' ,,,"SA2"  ,,,,,,,,, )
    oStruct:AddField( 'F1_LOJA'        ,'4','Loja'          ,'Loja'        ,, 'Get' ,,,       ,,,,,,,,, )
    oStruct:AddField( 'BT_CONSULTA' ,'5','CONSULTAR'  ,'CONSULTAR'    ,, 'BT'  ,,,        ,,,,,,,,, )
return oStruct

static function getViewZB4()
Local oStruct := FWFormViewStruct():New()
    oStruct:AddField( 'D1_OK'      ,'1','OK'                      ,'OK'                    ,, 'Get' ,,,,    ,,,,,,,, )
    oStruct:AddField( 'D1_ITEM'      ,'2','Ítem'                ,'Ítem'                ,, 'Get' ,,,,.F.,,,,,,,, )
    oStruct:AddField( 'D1_COD'      ,'3','Código'                ,'Código'                ,, 'Get' ,,,,.F.,,,,,,,, )
    oStruct:AddField( 'B1_DESC'      ,'4','Descrição'        ,'Descrição'            ,, 'Get' ,,,,.F.,,,,,,,, )
    oStruct:AddField( 'ZB4_CODCA' ,'5','Certificado de A' ,'Certificado de A'    ,, 'Get' ,,,,    ,,,,,,,, )
    oStruct:AddField( 'ZB4_DTVALI','6','Dt.Validade'        ,'Dt.Validade'        ,, 'Get' ,,,,    ,,,,,,,, )
    oStruct:AddField( 'ZB4_LOTECA','7','Lote C.A'            ,'Lote C.A'            ,, 'Get' ,,,,    ,,,,,,,, )
    oStruct:AddField( 'ZB4_MARCA' ,'8','Marca'            ,'Marca'                ,, 'Get' ,,,,    ,,,,,,,, )
    oStruct:AddField( 'ZB4_LOTERM','9','Identifica Lote'  ,'Identifica Lote'    ,, 'Get' ,,,,    ,,,,,,,, )




return oStruct




Static Function getForn(oField)
Local cLoja := ""

    cLoja := POSICIONE("SA2", 1,xFilial("SA2")+oField:GetValue('F1_FORNECE' ), "A2_LOJA")

    oField:SetValue("F1_LOJA",cLoja)


Return 
Static Function Commit(oModel)
Local oStrZB4    := getViewZB4()

    For nJ := 1 To oStrZB4:Length()
        oStrZB4:GoLine( nJ )
        alert(oModel:GetValue( 'DETAIL', 'B1_DESC' ))
    Next nJ


Return lRet


Static Function Load()
Local aLoad := {}

Return aLoad
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do SigaOAdvpl!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ou faça a sua própria pergunta.