terça-feira, 16 de julho de 2013

Condição de Pagamento Protheus


Olá pessoal,

Faz tempo que não posto nada sobre Protheus, mas me deparei com um problema interessante.
Um colaborador do Financeiro me pediu para criar a condição de pagamento com 36 parcelas. Até aí tudo bem, mas tive o primeiro impasse.
O campo só cabe 40 caracteres.
Depois de muita pesquisa e de buscar no TDN e nada achar, encontre a solução em um fórum para facilitar a vida de todos como sempre, estou postando abaixo as possíveis soluções para cadastros de condições de pagamento no Protheus.

Detalhe usei o Tipo 5

Condição de Pagamento
A Condição de Pagamento é característica geral da maneira pela qual um pagamento será efetuado. Para indicar uma condição de pagamento em qualquer módulo do Advanced Protheus deve-se informar:

Código - Código da Condição de Pagamento
Tipo - Tipo da Condição de Pagamento
Condição - Parâmetros da Condição de Pagamento

Assim:

Tipo: 1
Estrutura: A condição de pagamento indica o deslocamento em dias a partir da data base. Os valores devem ser separados por vírgula. O usuário pode definir qualquer código para representar a condição.

Exemplo: 30,60,90,120,150

Tipo: 2
Estrutura: O próprio código da Condição de Pagamento representa os vencimentos, regidos pela formula:
O campo condição deve determinar o multiplicador.

Exemplo:
O código 341 com um multiplicador 7 representa:
- 21 dias para a primeira duplicata
- 4 duplicatas
- 7 dias de intervalo entre duplicatas

Tipo: 3
Estrutura: O campo "Condição" determina as datas padronizadas para o vencimento. O usuário pode definir qualquer código para representar a condição.

Exemplo:
O programa calcula, após a data de emissão, as datas de vencimento, ajustando-as de acordo com as datas padrão fornecidas, sempre para a próxima.

Tipo: 4
Estrutura: O campo "Condição" determina os dias da semana padronizados para o vencimento. O usuário pode definir qualquer código para representar a condição.
Onde D1:

1 Domingo
2 Segunda
3 Terça
4 Quarta
5 Quinta
6 Sexta
7 Sábado

Tipo: 5
Estrutura: O campo "Condição" representa os vencimentos, regidos pela seguinte fórmula:
Exemplo: A condição "10,12,30" representa:

10 -dias para a primeira duplicata
12 -duplicatas
30-dias de intervalo entre duplicatas

Tipo: 6
Estrutura: O campo "Sistema" assume dias da semana padronizados para o vencimento, considerando o intervalo de dias entre cada parcela.
Onde D1:
1 Domingo
2 Segunda
3 Terça
4 Quarta
5 Quinta
6 Sexta
7 Sábado

Tipo: 7
Permitinde a definição de datas fixas de vencimento no período de um ano.
O valor de cada parcela será calculado dividindo o Valor Total da Nota pelo Número de Parcelas. Quando o dia informado for superior ao último dia do mês, o último dia do
mesmo será assumido. Esta condição trata as parcelas da seguinte maneira:
São definidos 13 valores numéricos, separados por vírgulas.  Os dois primeiros dígitos, indicam o número de parcelas.  Os demais devem ser utilizados para informar os dias de vencimento das parcelas (de Janeiro a Dezembro).
Quando o dia informado for superior ao último dia do mês, o último dia
do mesmo será assumido.

Exemplo:
Condição: 03,05,10,15,20,25,30,05,10,15,20,25,30
Dias da Data: Fora a Quinzena
Data Base: 25/03/96
Neste caso, serão 3 parcelas com vencimento nos dias 20/04, 25/05 e 30/06.

Tipo: 8
Estrutura: O campo "Condição" representa os dias de deslocamento para cálculo do vencimento das parcelas e o percentual para divisão dos valores cada parcela.

Exemplo:
Condição: [30,60,90],[25,35,40]
A soma dos totais dos percentuais deve ser de 100%
Num total de 1.000 reais serão gerados as seguintes parcelas.
para 30 dias, 25% do total R$ 250,00
para 60 dias, 35% do total R$ 350,00
para 90 dias, 40% do total R$ 400,00

Tipo: 9
Estrutura: Datas fixas. O cliente informa as datas de vencimentos e valores ou percentuais.
Basta indicar no arquivo de Condições de Pagamento, campo Condição, o símbolo "%" para utilizar os campos PARCELAS do arquivo de Pedidos de Vendas, como percentuais a serem parcelados. Caso o campo "Condição" (arquivo Condições de Pagamento), seja preenchido com qualquer outra informação que não seja o símbolo "%", os parcelamentos serão considerados em valor.

Daniel S. Menezes
Analista de Sistemas
Programador AdvPL
Programador C# (.Net)

terça-feira, 10 de abril de 2012

Régua de Registros Funcionando (Protheus)

Olá,

Essa semana me deparei com o seguinte problema, fazer a régua do Protheus funcionar.
Observei os manuais, pesquisei várias coisas na internet e cheguei a uma solução simples e funcional.

Chamando a função Processa(Ação, cTitulo, cMensagem, cParam).

onde Ação é o programa que iremos utilizar para realizar o que queremos, cTitulo é a mensagem que irá aparecer na barra de título da caixa de processamento, cMensagem é a mesagem que vai aparecer logo acima da régua, cParam é o parametro (.T. ou .F.) que define se o botão de cancelar estará ativo ou não.

Abaixo temos um exemplo da tela e abaixo da tela temos o código fonte utilizado.

#Include "TopConn.ch"

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma  ³cTest     ºAutor  ³Daniel Menezes      º Data ³  03/29/12   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc.     ³                                                            º±±
±±º          ³                                                            º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ AP                                                         º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/


User Function cTest

Processa( {|| xProc()}, "Tela de Processamento" , "Realizando Consulta...", .T.)

Static Function xProc

Private nRec

xPesq()

ProcRegua(nRec)    // Cria a régua com a quantidade de registros contatos
DbSelectArea("PSQ")
PSQ->(DbGoTop())     // Na contagem de registros o sistema posiciona no ultimo registros, usamos para reposicionar no primeiro registro.

Do While PSQ->(!Eof())
                
           IncProc(PSQ->(FILIAL + " - " + MAT + " - " + SubStr(NOME,1,25))) //Altera o texto da régua em tempo de execução.
    
PSQ->(DbSkip())

EndDo

PSQ->(dbCloseArea())

Return


Static Function xPesq

cArqSRA    := RetSqlName("SRA")

    cQry:= " SELECT A.RA_FILIAL AS FILIAL, A.RA_MAT MAT, LTRIM(A.RA_NOME) NOME 
    cQry+= " FROM " + cArqSRA + " A
    cQry+= " WHERE A.D_E_L_E_T_ <> '*' "
    cQry+= " AND A.RA_SITFOLH IN (' ','F')"

TCQUERY cQry NEW ALIAS "PSQ"

Count To nRec     //Varre o Alias criado e conta o número de registros.

Return

terça-feira, 13 de março de 2012

apt-get com internet com proxy




Olá,


Hoje eu fiz a instalação de uma maquina virtual com Linux Ubuntu 11.10 e me deparei com um problema um tanto complicado.
Como atualizar via apt-get já que eu estou utilizando uma rede com proxy, pesquisei um bocado até achar uma solução muito interessante.




Configurando "apt-get" com Proxy Transparente


# sudo vi /etc/environment


http_proxy="http://endereçoproxy:3128"
ftp_proxy= "http://endereçoproxy:3128" 


Acquire {
HTTP::Proxy  http://endereçoproxy:3128;
FTP::Proxy  http://endereçoproxy:3128;
};
alias wget="wget -Y on" 


No exemplo acima é demonstrada a configuração do proxy para o protocolo HTTP e FTP.
Você também deve informar o endereço e a porta do seu servidor Proxy (Squid).


Edite o arquivo de configuração do APT-GET:


# sudo vi /etc/apt/apt.conf


Adicione as seguintes linhas:


Acquire {
HTTP::proxy "http://endereçoproxy:3128";
FTP::proxy "http://endereçoproxy:3128";
};


Está pronto.


Configurando "apt-get" para Proxy com Autenticação
Para configurar o "apt-get" para Proxy com Autenticação é necessário incluir o usuário e senha, como
EXEMPLO irei utilizar o usuário "user1" e a senha "123654".
Primeiro edite o arquivo de variáveis de ambiente com o comando abaixo:


#sudo vi /etc/environment 


E inclua o seguinte conteúdo no arquivo "environment":


http_proxy="http://user1:123654@endereçoproxy:3128"
ftp_proxy="http://user1:123654@endereçoproxy:3128" 


Acquire {
HTTP::Proxy  user1:123654@endereçoproxy:3128;
FTP::Proxy  user1:123654@endereçoproxy:3128 ;
};
alias wget="wget --proxy-user=user1 --proxy-passwd=123654" 

quarta-feira, 28 de dezembro de 2011

Mais uma vez o REP foi adiado

Como de costume mais uma vez o REP foi adiado, é a quinta vez que isso acontece, vamos esperar o que vai ser dessa vez, abaixo as datas "Provaveis" para a obrigatoriedade:

A implantação do novo ponto eletrônico deverá ser a partir de 2 de abril de 2012 para as empresas que exploram atividades na indústria, no comércio em geral, no setor de serviços, incluindo, entre outros, os setores financeiro, de transportes, de construção, de comunicações, de energia, de saúde e de educação; a partir de 1º de junho de 2012, para as empresas que exploram atividade agroeconômica nos termos da Lei n.º 5.889, de 8 de julho de 1973; e a partir de 3 de setembro de 2012 para as microempresas e empresas de pequeno porte, definidas na forma da Lei Complementar nº 126/2006.

Fonte: G1

segunda-feira, 12 de dezembro de 2011

Função PHP para iniciais maiúsculas (CAPITALIZE)

Bom dia a todos,

Iniciei uma nova caminhada, agora estou estudando também PHP e pesquisando na internet sobre uma função para realizar um CAPITALIZE em frases descobri que o PHP não tem ainda nativo. Com um pouco mais de pesquisa encontrei a função abaixo que funcionou muito bem e pode ser útil para vocês.
Ela levam em consideração nosso idioma desconsiderando os verbetes: um, uma, o, a, de, do, da, em.


Chega de enrolação, vamos a função:


 <?php  
 function strCapital($str)  
   {  
     $noUp = array('um','uma','o','a','de','do','da','em');  
     $str = trim($str);  
     $str = strtoupper($str[0]) . strtolower(substr($str, 1));  
     for($i=1; $i<strlen($str)-1; ++$i) {  
       if($str[$i]==' ') {  
         for($j=$i+1; $j<strlen($str) && $str[$j]!=' '; ++$j); //find next space  
         $size = $j-$i-1;  
         $shortWord = false;  
         if($size<=3) {  
           $theWord = substr($str,$i+1,$size);  
           for($j=0; $j<count($noUp) && !$shortWord; ++$j)  
             if($theWord==$noUp[$j])  
               $shortWord = true;  
         }  
         if( !$shortWord )  
           $str = substr($str, 0, $i+1) . strtoupper($str[$i+1]) . substr($str, $i+2);  
       }    
       $i+=$size;  
     }  
     return $str;  
   }  
 ?>  

sexta-feira, 18 de novembro de 2011

Primeiras Letras Maiusculas

Função CAPITAL()


Função para avaliar uma string passada como parâmetro alterando a primeira letra de cada palavra para maiúscula e as demais letras para minúsculas.


Sintaxe: CAPITAL(cTexto)


Parâmetros:
cTexto-> String a ser avaliada


Retorno:
String Contendo a string original com as modificações necessárias para atender a
condição da função.


Ex:


ALERT(CAPITAL("LUIZ INACIO LULA DA SILVA"))



quinta-feira, 16 de dezembro de 2010

Erro nos Icones do Office 2007

Já me pediram para fazer a desistalação do Office, já fiz reparação mas nada adiantou, pesquisando no pai dos burros (Google.com) encontrei uma solução util e talvez complicada, mas que funciona.

Basta seguir os passos abaixo e vai ficar tudo bem.


1) Baixe o programa chamado FileTypesMan (filetypesman.zip) e execute-o. Ele permite alterar a configuração das extenções, tal como programa que executará o arquivo e icone.

2) Procure pela extensão .doc e dê duplo clique sobre.

3) Ao lado de Default icon clique no botão que tem reticencias [...], e procure pelo executavel do Word (no meu pc está em: C:\Program Files\Microsoft Office\Office12\WINWORD.EXE) clique em OK

4) Abaixo aparecerão todos os icones possiveis. Escolha o que mais lhe agrada.




5) Repetir o procedimento a partir da etapa 2 para todos as extenções (.docx, .dot, .dotx...)

Fazer o mesmo procedimento para Excel, Powerpoint, Access.. Etc..

Detalhes comuns:

Word
Executavel: WINWORD.exe
Extensões: .doc .dot .docx .dotx

Excel
Executavel: EXCEL.exe
Extensões: .xls .xlt .xlsx .xltx

Powerpoint
Executavel: POWERPNT.exe
Extensões: .ppt .pps .pptx .ppsx

Access
Executavel: MSACCESS.exe
Extensões: .mdb

Daniel S. Menezes
Analista de Sistemas
Programador ADVPL