Jump to content

Inserir linha num dossier interno com os campos st.desc1, st.desc2, ...


Luis Pais

Recommended Posts

Olá,

Necessito de ajuda para o seguinte.

Ao introduzir uma linha num dossier interno, referente a um artigo composto, preciso que ao colocar a referência do artigo composto, ele introduza nas linhas os artigos componentes com as st.desc1, st.desc2, etc, das respectivas referências.

Como exemplo, imaginemos um Quarto, que é composto pelo componente Cama, componente Cómoda e componente Mesa de Cabeceira.

Preciso que ao colocar a referência quarto, ele coloque as referências da cama, cómoda e mesas de cabeceira com as desc1, desc2, etc do ST.

Tenho um evento ao introduzir uma linha no BO, com o código abaixo:

If Inlist(bo.ndos,3)

    If Vartype(SBO) = "O"
        Select bi
        If Not Empty(bi.ref) And existcheck(bi.ref,"st.ref"," ",.T.)
            Store bi.ref To m.cref
            If instring(m.mc1,ASTR(Rtrim(m.cref)))
                If (ASTR(Substr(m.cref,4,1)) = "." And ASTR(Substr(m.cref,5,2)) = "CJ" And ASTR(Substr(m.cref,7,1)) = ".")
                    Select bi
                    Store bi.lrecno To m.clbirecno
                    Store bi.desconto To m.cdesconto
                    **Store bi.ettdeb To m.cpvpconjunto

                    m.cprocstreftabelast = "select st.epcusto from st (nolock) where st.ref like '" + ASTR(Rtrim(m.cref))    + "' "

                    If u_sqlexec(m.cprocstreftabelast,"c_tmpst") And Reccount("c_tmpst") > 0
                        Select c_tmpst
                        Goto Top
                        Scan
                            Store c_tmpst.epcusto To m.necusto
                        Endscan
                        fecha("c_tmpst")
                    Endif

                    Store m.necusto to m.cpvpconjunto

                    select bi
                    
                    Goto Top
                    Scan

                        m.cprocstreftabelasc = "select sum(sc.qtt*st.epcusto) as totalpeca from sc (nolock) "
                        m.cprocstreftabelasc = m.cprocstreftabelasc + " inner join st (nolock) on st.ref=sc.ref "
                        m.cprocstreftabelasc = m.cprocstreftabelasc + " where "
                        m.cprocstreftabelasc = m.cprocstreftabelasc + " sc.refb like '" + ASTR(Rtrim(m.cref))    + "' "

                        If u_sqlexec(m.cprocstreftabelasc,"c_tmpsc") And Reccount("c_tmpsc") > 0
                            Select c_tmpsc
                            Goto Top
                            Scan
                                Store c_tmpsc.totalpeca To m.necustoun
                            Endscan
                            fecha("c_tmpsc")
                        Endif

                        select bi

                        If ASTR(Rtrim(bi.lrecno))=ASTR(Rtrim(m.clbirecno)) And bi.stns=.F.

                            m.cprocstreftabelast = "select st.epcusto, st.desc1, st.desc2, st.desc3, st.desc4, st.desc5, st.desc6 "
                            m.cprocstreftabelast = m.cprocstreftabelast + "from st (nolock) where st.ref like '" + ASTR(Rtrim(bi.ref))    + "' "
                            If u_sqlexec(m.cprocstreftabelast,"c_tmpst") And Reccount("c_tmpst") > 0
                                Select c_tmpst
                                Goto Top
                                Scan
                                    Store c_tmpst.epcusto To m.necustoST
                                    Store c_tmpst.desc1 To m.cdesc1
                                    Store c_tmpst.desc2 To m.cdesc2
                                    Store c_tmpst.desc3 To m.cdesc3
                                    Store c_tmpst.desc4 To m.cdesc4
                                    Store c_tmpst.desc5 To m.cdesc5
                                    Store c_tmpst.desc6 To m.cdesc6
                                Endscan
                                fecha("c_tmpst")
                            Endif

                            Select bi
                            replace bi.edebito with round((m.necustoST-(m.necustoST*(m.necusto/m.necustoun))-m.necustoST),2)*-1
                            replace bi.desconto with m.cdesconto
                            replace bi.design with astr(m.cdesc1)

**                            If not empty(m.cdesc2)
**                                select bi
**                                Do Boine2in
**                                replace bi.design with astr(m.cdesc2)
**                            Endif

**                            If not empty(m.cdesc3)
**                                select bi
**                                Do Boine2in
**                                replace bi.design with astr(m.cdesc3)
**                            Endif

**                            If not empty(m.cdesc4)
**                                select bi
**                                Do Boine2in
**                                replace bi.design with astr(m.cdesc4)
**                            Endif

**                            If not empty(m.cdesc5)
**                                select bi
**                                Do Boine2in
**                                replace bi.design with astr(m.cdesc5)
**                            Endif

**                            If not empty(m.cdesc6)
**                                select bi
**                                Do Boine2in
**                                replace bi.design with astr(m.cdesc6)
**                            Endif                    

                            **MSG(ASTR(BI.LRECNO))
                            **MSG(ASTR(BI.LORDEM))

                        Endif
                        If ASTR(Rtrim(bi.lrecno))=ASTR(Rtrim(m.clbirecno)) And bi.stns=.T.
                            Replace bi.ref With ""
                            Replace bi.qtt With 0
                            Replace bi.desconto With 0
                            Replace bi.epu With 0
                            Replace bi.edebito With 0
                            Replace bi.eprorc With 0
                            Replace bi.EPCUSTO With 0
                            Replace bi.ettdeb With 0
                            Replace bi.stns With .F.
                            Replace bi.ecustoind With 0
                            Replace bi.edebitoori With 0
                            Replace bi.Design With "QUARTO COMPOSTO POR:"+" (Preço: "+astr(m.necusto) + "€ Suj. "+astr(m.cdesconto)+"%)"
                            **Replace bi.lrecno With ""
**                            msg("Apaguei a Ref do Composto. Os valores foram distribuidos pelas linhas")
                            **Do Boine2in
                        Endif
                    Endscan
                Endif
            Endif
        Endif
    Endif
Endif

 

Agradeço a vossa ajuda para o pretendido.

 

Obrigado

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.