Jump to content

PHC - Tecla de Atualização de Artigos


Gonçalo Santos
Go to solution Solved by Gonçalo Santos,

Recommended Posts

Bom dia a todos
Espero que se encontrem bem

Preciso da vossa ajuda se for possível
Tenho esta tecla de Atualização de Artigos para Corporate onde faz a seguinte validação:
Se o código existe na ST, guarda a referência
Se existir o código na BC, guarda a referência

Quando chego ao if de validações, não passa porque vai sempre a zero

Podem ajudar pfvr?

Abaixo o código:
 

Citação

*Importar dados XLS
m_file=Getfile("XLS","Ficheiro","Escolher",0,"Seleccione o Ficheiro a Importar")
If Type("m_file")<>"C" Or Not File(m_file)
    Messagebox("Ficheiro Não Encontrado")
Endif

** Cursor para as referencias inválidas
Create Cursor INVREF (Ref Varchar(30))

* Altera as decimais que são utilizadas por defeito na aplicação
Set Point To "."

*Criar Cursor
Create Cursor Artgs (Ref Varchar(18),Codigo Varchar(40), pvp1 numeric(8,3),RefFornecedor Varchar(20), tipodesc varchar(60), pbruto numeric(8,3), url varchar(100), usr4 varchar(20), usr5 varchar(120), usr6 varchar(30))

Append From (m_file) Xls

Select Artgs
Mostrameisto("Artgs")

    

Regua(0, Reccount("Artgs"), "A Atualizar Artigos")
Scan
    Regua(1, Recno("Artgs"), "A Atualizar artigo de Ref: " + Alltrim(Upper(Artgs.Ref)))
    
    *Obtenção de Ref através de Código de Barras com ficheiro Excel
    local codigo
    m.codigo=GetUmValorNumerico("ST","st.ref","ST.codigo='"+Artgs.Codigo+"'")
    
        
    *Verifica se Existe o Código de Barras do Excel na Tabela de Códigos de Barras Alternativo e fica com referência em variável
    local codigoAlternativo
    m.codigoAlternativo=GetUmValorNumerico("BC", "BC.ref","bc.codigo='"+Artgs.Codigo+"'")
    msg(m.codigoAlternativo)
    
    *IF para validar existência de Referência através de CodBarras para atualização
    local m.RefRegistar 

    if m.codigoAlternativo=" " and m.codigo=" "
       m.RefRegistar="0"
    else
        if m.codigo=Artgs.ref
            m.RefRegistar=Artgs.ref
        ELSE    
            if m.codigoAlternativo<>""
                m.RefRegistar=m.codigoAlternativo
            endif
        endif
    endif
    
    msg(m.RefRegistar)
        IF m.RefRegistar<>"0"
            TEXT to msel textmerge noshow
                UPDATE st SET epv1 = <<Artgs.pvp1>>, pv1 = <<Artgs.pvp1>> * 200.482, forref = '<<Artgs.RefFornecedor>>', tipodesc = '<<Artgs.tipodesc>>', pbruto = '<<Artgs.pbruto>>', url = '<<Artgs.url>>',usr4 = CASE WHEN usr4 IS NULL OR usr4 = '' THEN '<<Artgs.usr4>>' ELSE usr4 END, usr5 = CASE WHEN usr5 IS NULL OR usr5 = '' THEN '<<Artgs.usr5>>' ELSE usr5 END, usr6 = CASE WHEN usr6 IS NULL OR usr6 = '' THEN '<<Artgs.usr6>>' ELSE usr6 END, impfuelpos = 1
                where ref='<<m.RefRegistar>>'
            ENDTEXT
            
            u_sqlexec(msel,'')    
            *Wait Window "A atualizar..." Timeout 1
        Else
            
            select INVREF
            append blank
            replace INVREF.ref with Alltrim(Artgs.Ref)
        Endif
    
sst.refresh()
sst.refrescar()
    
Endscan
Regua(2)

Mensagem("Importação Terminada", "DIRECTA")
Mostrameisto("INVREF")
Fecha("Artgs")
Fecha("INVREF")

Set Point To se_pointer

 

Link to comment
Share on other sites

  • Solution

Resolvi assim substituindo o IF por case:
 

*Importar dados XLS
m_file=Getfile("XLS","Ficheiro","Escolher",0,"Seleccione o Ficheiro a Importar")
If Type("m_file")<>"C" Or Not File(m_file)
    Messagebox("Ficheiro Não Encontrado")
Endif

** Cursor para as referencias inválidas
Create Cursor INVREF (Ref Varchar(30))

* Altera as decimais que são utilizadas por defeito na aplicação
Set Point To "."

*Criar Cursor
Create Cursor Artgs (Ref Varchar(18),Codigo Varchar(40), pvp1 numeric(8,3),RefFornecedor Varchar(20), tipodesc varchar(60), pbruto numeric(8,3), url varchar(100), usr4 varchar(20), usr5 varchar(120), usr6 varchar(30))

Append From (m_file) Xls

Select Artgs
Mostrameisto("Artgs")

    

Regua(0, Reccount("Artgs"), "A Atualizar Artigos")
Scan
    Regua(1, Recno("Artgs"), "A Atualizar artigo de Ref: " + Alltrim(Upper(Artgs.Ref)))
    
    *Obtenção de Ref através de Código de Barras com ficheiro Excel
    local codigo
    m.codigo=GetUmValorNumerico("ST","st.ref","ST.codigo='"+Artgs.Codigo+"'")
        
    *Verifica se Existe o Código de Barras do Excel na Tabela de Códigos de Barras Alternativo e fica com referência em variável
    local codigoAlternativo
    m.codigoAlternativo=GetUmValorNumerico("BC", "BC.ref","bc.codigo='"+Artgs.Codigo+"'")
    
    
    *IF para validar existência de Referência através de CodBarras para atualização
    local m.RefRegistar 
  
    DO CASE
    CASE EMPTY(Alltrim(m.codigoAlternativo)) and EMPTY(ALLTRIM(m.codigo))
       m.RefRegistar="0"
    CASE NOT EMPTY(ALLTRIM(m.codigo))
            m.RefRegistar=Artgs.ref        
    CASE NOT EMPTY(ALLTRIM(m.codigoAlternativo))
                m.RefRegistar=m.codigoAlternativo
    ENDCASE
    
    
        IF m.RefRegistar<>"0"
            TEXT to msel textmerge noshow
                UPDATE st SET epv1 = <<Artgs.pvp1>>, pv1 = <<Artgs.pvp1>> * 200.482, forref = '<<Artgs.RefFornecedor>>', tipodesc = '<<Artgs.tipodesc>>', pbruto = '<<Artgs.pbruto>>', url = '<<Artgs.url>>',usr4 = CASE WHEN usr4 IS NULL OR usr4 = '' THEN '<<Artgs.usr4>>' ELSE usr4 END, usr5 = CASE WHEN usr5 IS NULL OR usr5 = '' THEN '<<Artgs.usr5>>' ELSE usr5 END, usr6 = CASE WHEN usr6 IS NULL OR usr6 = '' THEN '<<Artgs.usr6>>' ELSE usr6 END, impfuelpos = 1
                where ref='<<m.RefRegistar>>'
            ENDTEXT
            
            u_sqlexec(msel,'')    
            *Wait Window "A atualizar..." Timeout 1
        Else
            
            select INVREF
            append blank
            replace INVREF.ref with Alltrim(Artgs.Ref)
        Endif
    
sst.refresh()
sst.refrescar()
    
Endscan
Regua(2)

Mensagem("Importação Terminada", "DIRECTA")
Mostrameisto("INVREF")
Fecha("Artgs")
Fecha("INVREF")

Set Point To se_pointer

Se tiverem outra solução melhor, pfvr, digam

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.