LeTRA - cálculo de valores do arquivo de venda do PDV
Publicado por Gabriel Fernandes (última atualização em 06/10/2009)
[ Hits: 5.850 ]
Homepage: http://cd2.com.br
LeTRA é um script para ler arquivo de movimento de venda (TRAB1.SDF) da solução de PDV da Zanthus - Zeus Front End e comparar se existem erros entre os registros 01 - resumo de cupom, registro 02 - movimentação de finalizadora, registro 03 - itens dos cupons e registro 05 - registro fiscal (redução Z).
Funciona também com a versão 1.6 da Zanthus e processa arquivo gigantes de vendas, testes foram efetuados em arquivo com mais de 100 mil linhas.
IMPORTANTE:
- Necessita do dialog instalado.
- Foi feito as pressas, pode estar um pouco desorganizado, mas funciona.
Boa sorte!
#!/bin/bash # # Duel class misc # Duel Informática Ltda. # Authors: Gabriel Fernandes <gabriel@duel.com.br> # log () { Hora=$(date +%X) [ ! -f /var/log/$Data/$NomePrograma.log ] && touch /var/log/installer/$Data/$NomePrograma.log echo "[$Hora] $1" >> /var/log/$Data/$NomePrograma.log } #exibelog TITULO CAMINHO_DO_ARQUIVO exibelog () { $Dialog --backtitle "$BackTitle" \ --title "$1 - [ENTER] Para atualizar informacoes." \ --tailbox "$2" \ 28 110 } #confirmacao - Solicita confirma??o dos dados confirmacao () { Retorno=$( $Dialog \ --stdout \ --backtitle "$BackTitle" \ --yesno "$1" 0 0 ) export Retorno=$? } #solicita_senha - Solicita entrada de uma senha solicita_senha () { DadoSolicitado=$( $Dialog \ --stdout \ --backtitle "$BackTitle" \ --passwordbox "$2" \ 0 0 ) export Retorno=$? export $1=$DadoSolicitado } #mostra_dados - exibe informa??es mostra_dado () { $Dialog --stdout \ --backtitle "$BackTitle" \ --title "$1" \ --msgbox "$2" \ 0 0 export Retorno=$? } #altera_parametro - Altera parametros em arquivos altera_parametro () { Arquivo=$1 Parametro=$2 Valor=$3 Resultado=$(grep -c $Parametro $Arquivo) case $Resultado in 0) log "Incluindo parametro $Parametro$Valor no arquivo $Arquivo." echo "$Parametro$Valor" >> $Arquivo ;; 1) log "Alterando parametro $Parametro$Valor no arquivo $Arquivo." echo "/$Parametro/c\\" > /tmp/scriptsed echo "$Parametro$Valor" >> /tmp/scriptsed sed -i~ -f /tmp/scriptsed $Arquivo 2>> /var/log/installer/$Data/$NomePrograma.zlg ;; *) log "Arquivo $Arquivo invalido, possui mais de uma vez o parametro $Parametro" ;; esac } #inicia - Funcao para inicializacao remota do pdvJava no display 0 inicia () { startx 2>> /dev/null & sleep 5 pid_app_ecf } #reinicia - Funcao para reinicializar remotamente o pdvJava no display 0 reinicia () { pid_app_ecf finaliza $PidAplicativoEcf sleep 5 inicia } #finaliza - Funcao para reinicializar remotamente o pdvJava no display 0 finaliza () { pid_app_ecf kill -9 $PidAplicativoEcf 2>> /dev/null } #pid_app_ecf - Funcao para reinicializar remotamente o pdvJava no display 0 pid_app_ecf () { PidAplicativoEcf=$(ps ax | grep -i lnx -m 1 | cut -d " " -f 2) } Exibe_Valor () { Valor=$1 Prefixo=$2 Tamanho=$3 Preenche "E" "$Tamanho" " " "$(echo -n ${Valor:0:$(expr ${#Valor} - 2)},${Valor:$(expr ${#Valor} - 3):2})" #export Retorno=$Prefixo$(echo -n ${Valor:0:$(expr ${#Valor} - 2)},${Valor:$(expr ${#Valor} - 3):2}) export Retorno=$Prefixo$Retorno } Preenche () { Direcao=$1 NumeroCaracteres=$2 CaracterPreenchimento=$3 Valor=$4 [ -z "$1" ] && Direcao="E" [ -z "$2" ] && NumeroCaracteres="3" [ -z "$3" ] && CaracterPreenchimento="_" [ -z "$4" ] && Valor="000" if [ "$Direcao" == "E" ] || [ "$Direcao" == "e" ] ; then for ((iCaracter=${#Valor};iCaracter<=$NumeroCaracteres;iCaracter++)); do Valor=$CaracterPreenchimento$Valor done else for ((iCaracter=${#Valor};iCaracter<=$NumeroCaracteres;iCaracter++)); do Valor=$Valor$CaracterPreenchimento done fi export Retorno=$Valor } NumECF_TRAB1 () { Linha=$1 Pdv=${Linha:13:2} Pdv=${Pdv#0} export Retorno=$Pdv } Total_Cupom_M01AK_TRAB1 () { Linha=$1 export Retorno=${Linha:54:12} } Valor_Recebido_M02AK_TRAB1 () { Linha=$1 export Retorno=${Linha:50:12} } Troco_Fornecido_M02AL_TRAB1 () { Linha=$1 export Retorno=${Linha:62:12} } Valor_Vendido_M03AP_TRAB1 () { Linha=$1 export Retorno=${Linha:83:12} } Valor_Desconto_M03AQ_TRAB1 () { Linha=$1 export Retorno=${Linha:95:12} } Valor_GtInicial_M05AM_TRAB1 () { Linha=$1 export Retorno=${Linha:58:16} } Valor_GtFinal_M05AN_TRAB1 () { Linha=$1 export Retorno=${Linha:74:16} } Valor_Cancelamento_M05AO_TRAB1 () { Linha=$1 export Retorno=${Linha:90:12} } Valor_Desconto_M05AP_TRAB1 () { Linha=$1 export Retorno=${Linha:102:12} } # # Duel leTRA - Soma movimentos do arquivo TRAB1.SDF # Duel Inform?tica Ltda. # Authors: Gabriel Fernandes <gabriel@duel.com.br> # source duel_functions NomePrograma="leTRA" Data=$(date +%F) Proxima="selecionar" Versao="0.2" BackTitle="LeTRA - TRAB1.SDF v$Versao - Duel Inform?tica Ltda." Dialog="dialog" Temp="/tmp" ArquivoTemp="log" ScriptTemp="install" confirmacao "+--------------------------------------------------+\n| LeTRA - Verifica integridade dos movimentos de um arquivo TRAB1.SDF |\n| Duel Informatica Ltda. 'Duel' |\n+--------------------------------------------------+\n| AVISO DE USO |\n| |\n| Este programa nao e oficial e nao tem nada a ver com a Zanthus |\n| Nao ha garantias de funcionamento use por sua conta e risco |\n| Mas normalmente ele funciona muito bem e ta para o gasto. |\n| |\n| |\n| |\n| |\n+--------------------------------------------------+\n| |\n| Nao tenha medo, mas clique em sim para usar o programa assim mesmo! |\n| |\n+--------------------------------------------------+" [ $Retorno -ne 0 ] && exit #TRAB1_LINHAS=( `sed 's/^/"/g; s/$/" /g;' $TRAB1_CAMINHO | tr '\n' ' '` ) #TRAB1_LINHAS=( `sed 's/^/"/g; s/$/"/g;' $TRAB1_CAMINHO` ) #echo $TRAB1_LINHAS > saida if [ ! -f "$1" ] ; then echo "" echo "Duel Automacao Comercial" echo "" echo "Use: $0 /caminho/do/TRAB1.SDF" echo "Exemplo: $0 TRAB1.SDF" echo "" echo "suporte@duel.com.br - (48)3258-4446" echo "" exit 1 fi TRAB1_CAMINHO=$1 TRAB1_QTD_REG01="0" TRAB1_QTD_REG02="0" TRAB1_QTD_REG03="0" TRAB1_QTD_REG05="0" REG01_M01AK_CUPOM="000" REG02_M02AK_RECEBIDO="000" REG02_M02AL_TROCO="000" REG02_SALDO="000" REG03_M03AP_VENDIDO="000" REG03_M03AQ_DESCONTO="000" REG03_SALDO="000" REG05_M05AM_GTINICIAL="000" REG05_M05AN_GTFINAL="000" REG05_M05AO_CANCELAMENTO="000" REG05_M05AP_DESCONTO="000" REG05_SALDO="000" TRAB1_LINHAS[0]="" TRAB1_CONT_LINHAS="0" LINHA="0" for i in $(seq 99); do REG01_M01AK_PDV[$i]="000" REG02_M02AK_PDV[$i]="000" REG02_M02AL_PDV[$i]="000" REG02_SALDO_PDV[$i]="000" REG03_M03AP_PDV[$i]="000" REG03_M03AQ_PDV[$i]="000" REG03_SALDO_PDV[$i]="000" REG05_M05AM_PDV[$i]="000" REG05_M05AN_PDV[$i]="000" REG05_M05AO_PDV[$i]="000" REG05_M05AP_PDV[$i]="000" REG05_SALDO_PDV[$i]="000" done TRAB1_SDF_NUM_LINHAS=$(cat $TRAB1_CAMINHO | wc -l) let TRAB1_SDF_NUM_LINHAS++ while read TRAB1_LINHA ; do TRAB1_LINHAS[$TRAB1_CONT_LINHAS]=$TRAB1_LINHA NumECF_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" PDV=$Retorno case "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]:0:2}" in # Registro do tipo 1 01) let TRAB1_QTD_REG01++ Exibe_Valor "$REG01_M01AK_CUPOM" REG01_M01AK_CUPOM_ANTERIOR=$Retorno Total_Cupom_M01AK_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG01_M01AK_CUPOM=$(expr $REG01_M01AK_CUPOM + $Retorno) REG01_M01AK_PDV[$PDV]=$(expr ${REG01_M01AK_PDV[$PDV]} + $Retorno) ;; # Registro do tipo 2 02) let TRAB1_QTD_REG02++ Valor_Recebido_M02AK_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG02_M02AK_RECEBIDO=$(expr $REG02_M02AK_RECEBIDO + $Retorno) REG02_M02AK_PDV[$PDV]=$(expr ${REG02_M02AK_PDV[$PDV]} + $Retorno) Troco_Fornecido_M02AL_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG02_M02AL_TROCO=$(expr $REG02_M02AL_TROCO + $Retorno) REG02_M02AL_PDV[$PDV]=$(expr ${REG02_M02AL_PDV[$PDV]} + $Retorno) REG02_SALDO=$(expr $REG02_M02AK_RECEBIDO - $REG02_M02AL_TROCO) REG02_SALDO_PDV[$PDV]=$(expr ${REG02_M02AK_PDV[$PDV]} - ${REG02_M02AL_PDV[$PDV]}) ;; # Registro do tipo 3 03) let TRAB1_QTD_REG03++ Valor_Vendido_M03AP_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG03_M03AP_VENDIDO=$(expr $REG03_M03AP_VENDIDO + $Retorno) REG03_M03AP_PDV[$PDV]=$(expr ${REG03_M03AP_PDV[$PDV]} + $Retorno) Valor_Desconto_M03AQ_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG03_M03AQ_DESCONTO=$(expr $REG03_M03AQ_DESCONTO + $Retorno) REG03_M03AQ_PDV[$PDV]=$(expr ${REG03_M03AQ_PDV[$PDV]} + $Retorno) REG03_SALDO=$(expr $REG03_M03AP_VENDIDO - $REG03_M03AQ_DESCONTO) REG03_SALDO_PDV[$PDV]=$(expr ${REG03_M03AP_PDV[$PDV]} - ${REG03_M03AQ_PDV[$PDV]}) ;; 05) let TRAB1_QTD_REG05++ Valor_GtInicial_M05AM_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG05_M05AM_GTINICIAL=$(expr $REG05_M05AM_GTINICIAL + $Retorno) REG05_M05AM_PDV[$PDV]=$(expr ${REG05_M05AM_PDV[$PDV]} + $Retorno) Valor_GtFinal_M05AN_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG05_M05AN_GTFINAL=$(expr $REG05_M05AN_GTFINAL + $Retorno) REG05_M05AN_PDV[$PDV]=$(expr ${REG05_M05AN_PDV[$PDV]} + $Retorno) Valor_Cancelamento_M05AO_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG05_M05AO_CANCELAMENTO=$(expr $REG05_M05AO_CANCELAMENTO + $Retorno) REG05_M05AO_PDV[$PDV]=$(expr ${REG05_M05AO_PDV[$PDV]} + $Retorno) Valor_Desconto_M05AP_TRAB1 "${TRAB1_LINHAS[$TRAB1_CONT_LINHAS]}" REG05_M05AP_DESCONTO=$(expr $REG05_M05AP_DESCONTO + $Retorno) REG05_M05AP_PDV[$PDV]=$(expr ${REG05_M05AP_PDV[$PDV]} + $Retorno) REG05_SALDO=$(expr $REG05_M05AN_GTFINAL - $REG05_M05AM_GTINICIAL) REG05_SALDO=$(expr $REG05_SALDO - $REG05_M05AO_CANCELAMENTO) REG05_SALDO=$(expr $REG05_SALDO - $REG05_M05AP_DESCONTO) REG05_SALDO_PDV[$PDV]=$(expr ${REG05_M05AN_PDV[$PDV]} - ${REG05_M05AM_PDV[$PDV]}) REG05_SALDO_PDV[$PDV]=$(expr ${REG05_SALDO_PDV[$PDV]} - ${REG05_M05AO_PDV[$PDV]}) REG05_SALDO_PDV[$PDV]=$(expr ${REG05_SALDO_PDV[$PDV]} - ${REG05_M05AP_PDV[$PDV]}) ;; esac let TRAB1_CONT_LINHAS++ clear echo "LeTRA v$Versao - Verifica integridade dos movimentos de um arquivo TRAB1.SDF" echo "Duel Inform?tica Ltda." echo "" echo "Lendo arquivo $TRAB1_CAMINHO..." echo "Processando linha $TRAB1_CONT_LINHAS de $TRAB1_SDF_NUM_LINHAS, aguarde..." echo "" echo "Registros:" echo " 01 = $TRAB1_QTD_REG01" echo " 02 = $TRAB1_QTD_REG02" echo " 03 = $TRAB1_QTD_REG03" echo " 05 = $TRAB1_QTD_REG05" echo "" done < $TRAB1_CAMINHO echo "" echo "Resumo Geral:" Exibe_Valor "$REG01_M01AK_CUPOM" "R$" "12" echo "Registro 01: $Retorno" Exibe_Valor "$REG02_SALDO" "R$" "12" echo "Registro 02: $Retorno" Exibe_Valor "$REG03_SALDO" "R$" "12" echo "Registro 03: $Retorno" Exibe_Valor "$REG05_SALDO" "R$" "12" echo "Registro 05: $Retorno" echo "" echo "Resumo por PDV:" for i in $(seq 99); do Preenche "E" "1" "0" "$i" NUM_PDV_EXIBE=$Retorno if [ "${REG01_M01AK_PDV[$i]}" != "000" ] || [ "${REG02_SALDO_PDV[$i]}" != "000" ] || [ "${REG03_SALDO_PDV[$i]}" != "000" ] || [ "${REG05_SALDO_PDV[$i]}" != "000" ] ; then VALOR_PDV=${REG01_M01AK_PDV[$i]} Exibe_Valor "$VALOR_PDV" "R$" "8" echo -n "PDV$NUM_PDV_EXIBE 01: $Retorno" VALOR_PDV=${REG02_SALDO_PDV[$i]} Exibe_Valor "$VALOR_PDV" "R$" "8" echo -n " - 02: $Retorno" VALOR_PDV=${REG03_SALDO_PDV[$i]} Exibe_Valor "$VALOR_PDV" "R$" "8" echo -n " - 03: $Retorno" VALOR_PDV=${REG05_SALDO_PDV[$i]} Exibe_Valor "$VALOR_PDV" "R$" "8" echo " - 05: $Retorno" fi done echo "" echo "Fim do processamento."
Crackear rede WIFI - Script para testes de segurança em redes Wifi - wpa e wpa2 com wordlist
Script para limpar os caches do proxy (squid)
Raiz Quadrada (Square Root) para Bash
Bashblog v1.0 0 - cria um microblog em HTML5
Nenhum comentário foi encontrado.
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Pedagogia no brasil não passa de alfabetização por m4sturbação mental (1)
compilação samba 4.22 rock linux 9.5 (3)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (7)