Como tratar reserva de numero de cupom em rede (HELP!!!!!)
Enviado: 03 Dez 2005 15:04
Galera,
Mais uma vez estou eu aqui com duvidas, mais afinal esse é o lugar certo.
Seguinte tenho uma aplicação que controla vendas a vista, com cheque e a prazo de um cliente, acontece que estou tendo problemas para controlar a reserva de numeração, por vezes saem vendas para para diferentes clientes com o mesmo numero.
Estou pegando o numero na hora de gravar ou seja, quando o usuario encerra a venda eu seleciono o arquivo e dou um
GO BOTTOM
WCOD_CON := COD_CON + 1
São 03 micros em rede gerando e imprimindo essas vendas.
Se alguem tiver um exemplo de como tratar isso, por favor me envie.
Vai abaixo um exemplo da rotina de venda a Vista.
Obrigado
Marcio Ril
SETCOLOR("B/W,W/N+,,,B/W")
WKTELA2 := SAVESCREEN(00,00,24,79)
IF !FILE("INDCLI1.IDX")
SELECT 1
USE CLIENTE ALIAS CLIENTE
INDEX ON COD_CLI TO INDCLI1
INDEX ON NOME_CLI TO INDCLI2
SET INDEX TO INDCLI1, INDCLI2
ELSE
SELECT 1
USE CLIENTE ALIAS CLIENTE
SET INDEX TO INDCLI1, INDCLI2
ENDIF
IF !FILE("INDVE1.IDX")
SELECT 3
USE VENDEDOR ALIAS VENDEDOR
INDEX ON COD_VEN TO INDVE1
INDEX ON NOME_VEN TO INDVE2
SET INDEX TO INDVE1, INDVE2
ELSE
SELECT 3
USE VENDEDOR ALIAS VENDEDOR
SET INDEX TO INDVE1, INDVE2
ENDIF
IF !FILE("INDME1.IDX")
SELECT 13
USE MENSAGEM ALIAS MENSA
INDEX ON COD_MEN TO INDME1
SET INDEX TO INDME1
ELSE
SELECT 13
USE MENSAGEM ALIAS MENSA
SET INDEX TO INDME1
ENDIF
IF !FILE("INDCO1.IDX")
SELECT 4
USE CONTRATO ALIAS CONTRATO
INDEX ON COD_CON TO INDCO1
INDEX ON COD_CON + COD_CLI TO INDCO2
SET INDEX TO INDCO1, INDCO2
ELSE
SELECT 4
USE CONTRATO ALIAS CONTRATO
SET INDEX TO INDCO1, INDCO2
ENDIF
IF !FILE("INDCX1.IDX")
SELECT 5
USE CAIXA ALIAS CAIXA
INDEX ON COD_CON TO INDCX1
INDEX ON COD_CON + VALOR_CON TO INDCX2
INDEX ON COD_CON + COD_CLI TO INDCX3
INDEX ON DTEM_CON TO INDCX4
SET INDEX TO INDCX1, INDCX2, INDCX3, INDCX4
ELSE
SELECT 5
USE CAIXA ALIAS CAIXA
SET INDEX TO INDCX1, INDCX2, INDCX3, INDCX4
ENDIF
IF !FILE("INDCA1.IDX")
SELECT 2
USE CARNE ALIAS CARNE
INDEX ON NUM_PAR TO INDCA1
INDEX ON COD_CON TO INDCA2
INDEX ON COD_CLI TO INDCA3
INDEX ON DTVEN_PAR + NUM_PAR TO INDCA4
INDEX ON COD_CON + COD_CLI TO INDCA5
INDEX ON COD_CON + NUM_PAR TO INDCA6
SET INDEX TO INDCA1, INDCA2, INDCA3, INDCA4, INDCA5, INDCA6
ELSE
SELECT 2
USE CARNE ALIAS CARNE
SET INDEX TO INDCA1, INDCA2, INDCA3, INDCA4, INDCA5, INDCA6
ENDIF
IF !FILE("INDCH1.IDX")
SELECT 6
USE CHEQUE ALIAS CHEQUE
INDEX ON NUM_CH TO INDCH1
INDEX ON COD_CLI TO INDCH2
INDEX ON NUM_CH + COD_CLI TO INDCH3
INDEX ON NUM_CH + COD_CON TO INDCH4
INDEX ON COD_CON TO INDCH5
SET INDEX TO INDCH1, INDCH2, INDCH3, INDCH4, INDCH5
ELSE
SELECT 6
USE CHEQUE ALIAS CHEQUE
SET INDEX TO INDCH1, INDCH2, INDCH3, INDCH4, INDCH5
ENDIF
SET DELETED ON
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WSOMA := 0
WCOD_CLI := 0
WNOME_CLI := SPACE(30)
WEND_CLI := SPACE(30)
WBAIRRO_CLI := SPACE(15)
WCID_CLI := SPACE(20)
WUF_CLI := SPACE(02)
WRG_CLI := SPACE(12)
WCPF_CLI := SPACE(14)
WLIMITE_CLI := 0
WPAGTO := 0
WPARCELAS := 0
WCOD_CON := 0
WDTEM_CON := DATAATU
WENTRADA := 0
WVL_TOT_CON := 0
WVL_DES_CON := 0
WVL_LIQ_CON := 0
WNUM_PAR := 0
WVL_PAR := 0
WDTVEN_PAR := DATAATU
WVL_PAR_PG := 0
WDT_PAR_PG := DATAATU
WOBS_CON := SPACE(38)
WOBS1_CON := SPACE(38)
WOBS2_CON := SPACE(38)
WOBS3_CON := SPACE(38)
WTP_PG_CON := 0
WCOD_VEN := 0
WSITUA_CLI := SPACE(1)
WULTIMA := 0
WDESC1_MEN := SPACE(30)
WDESC2_MEN := SPACE(30)
WPOSCARNE := 0
WCOD_UNICO := 0
WCONF := "S"
JANELA(02,00,08,79," S I S C R E D I ")
COR("MENU")
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@ 04,02 SAY "Cliente.:"
@ 05,02 SAY "Endereco:"
@ 06,02 SAY "Bairro..: Cidade:"
@ 07,02 SAY "CPF.....: RG....:"
@ 03,67 TO 07,78
@ 04,68 SAY " Contrato "
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@ 09,02 SAY "---------- M E N U ------------- ------------ PARCELAMENTOS ------------"
@ 10,02 SAY " "
@ 11,02 SAY " "
@ 12,02 SAY " "
@ 13,02 SAY " "
@ 14,02 SAY " "
@ 15,02 SAY " "
@ 16,02 SAY " "
@ 17,02 SAY " "
@ 18,02 SAY " "
@ 19,02 SAY " ---- POSIۂO FINANCEIRA DO CLIENTE ----"
@ 20,02 SAY " "
@ 21,02 SAY " "
@ 08,01 TO 22,38
@ 08,39 TO 17,78
@ 18,39 TO 22,78
SELE CONTRATO
SET ORDER TO 1
GO BOTTOM
WCOD_CON := COD_CON + 1
WCOD1_CON := WCOD_CON
SELE CLIENTE
SET ORDER TO 1
@ 04,12 GET WCOD_CLI VALID (WCOD_CLI>0) PICT "999999"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
@ 05,71 SAY WCOD_CON PICT "999999"
@ 06,68 SAY WDTEM_CON PICT "@D"
SEEK WCOD_CLI
IF FOUND()
WNOME_CLI := NOME_CLI
WEND_CLI := END_CLI
WCID_CLI := CID_CLI
WBAIRRO_CLI := BAIRRO_CLI
WUF_CLI := UF_CLI
WRG_CLI := RG_CLI
WCPF_CLI := CPF_CLI
WSITUA_CLI := SITUA_CLI
WLIMITE_CLI := LIMITE_CLI
WPENDENTE := "P"
WDADOS1_CLI := DADOS1_CLI
WDADOS2_CLI := DADOS2_CLI
WDADOS3_CLI := DADOS3_CLI
@ 04,20 SAY WNOME_CLI PICT "@!"
@ 05,12 SAY WEND_CLI PICT "@!"
@ 06,12 SAY WBAIRRO_CLI PICT "@!"
@ 06,36 SAY WCID_CLI PICT "@!"
@ 06,62 SAY "-"
@ 06,64 SAY WUF_CLI PICT "@!"
@ 07,12 SAY WCPF_CLI PICT "999.999.999-99"
@ 07,36 SAY WRG_CLI PICT "@!"
ELSE
BEEP()
MENSAGEM("Cliente nÆo Cadastrado",2)
LOOP
ENDIF
POSFIN()
POSFINRODAPE()
DO WHILE .T.
COR("MENU")
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@ 09,02 SAY "---------- M E N U ------------- ------------ PARCELAMENTOS ------------"
@ 10,02 SAY " "
@ 11,02 SAY " "
@ 12,02 SAY " "
@ 13,02 SAY " "
@ 14,02 SAY " "
@ 15,02 SAY " "
@ 16,02 SAY " "
@ 17,02 SAY " "
@ 18,02 SAY " "
@ 19,02 SAY " ---- POSIۂO FINANCEIRA DO CLIENTE ----"
@ 20,02 SAY " "
@ 21,02 SAY " "
@ 08,01 TO 22,38
@ 08,39 TO 17,78
@ 18,39 TO 22,78
@ 11,03 PROMPT " VENDA · VISTA "
@ 12,03 PROMPT " VENDA C/CHEQUE PR
Mais uma vez estou eu aqui com duvidas, mais afinal esse é o lugar certo.
Seguinte tenho uma aplicação que controla vendas a vista, com cheque e a prazo de um cliente, acontece que estou tendo problemas para controlar a reserva de numeração, por vezes saem vendas para para diferentes clientes com o mesmo numero.
Estou pegando o numero na hora de gravar ou seja, quando o usuario encerra a venda eu seleciono o arquivo e dou um
GO BOTTOM
WCOD_CON := COD_CON + 1
São 03 micros em rede gerando e imprimindo essas vendas.
Se alguem tiver um exemplo de como tratar isso, por favor me envie.
Vai abaixo um exemplo da rotina de venda a Vista.
Obrigado
Marcio Ril
SETCOLOR("B/W,W/N+,,,B/W")
WKTELA2 := SAVESCREEN(00,00,24,79)
IF !FILE("INDCLI1.IDX")
SELECT 1
USE CLIENTE ALIAS CLIENTE
INDEX ON COD_CLI TO INDCLI1
INDEX ON NOME_CLI TO INDCLI2
SET INDEX TO INDCLI1, INDCLI2
ELSE
SELECT 1
USE CLIENTE ALIAS CLIENTE
SET INDEX TO INDCLI1, INDCLI2
ENDIF
IF !FILE("INDVE1.IDX")
SELECT 3
USE VENDEDOR ALIAS VENDEDOR
INDEX ON COD_VEN TO INDVE1
INDEX ON NOME_VEN TO INDVE2
SET INDEX TO INDVE1, INDVE2
ELSE
SELECT 3
USE VENDEDOR ALIAS VENDEDOR
SET INDEX TO INDVE1, INDVE2
ENDIF
IF !FILE("INDME1.IDX")
SELECT 13
USE MENSAGEM ALIAS MENSA
INDEX ON COD_MEN TO INDME1
SET INDEX TO INDME1
ELSE
SELECT 13
USE MENSAGEM ALIAS MENSA
SET INDEX TO INDME1
ENDIF
IF !FILE("INDCO1.IDX")
SELECT 4
USE CONTRATO ALIAS CONTRATO
INDEX ON COD_CON TO INDCO1
INDEX ON COD_CON + COD_CLI TO INDCO2
SET INDEX TO INDCO1, INDCO2
ELSE
SELECT 4
USE CONTRATO ALIAS CONTRATO
SET INDEX TO INDCO1, INDCO2
ENDIF
IF !FILE("INDCX1.IDX")
SELECT 5
USE CAIXA ALIAS CAIXA
INDEX ON COD_CON TO INDCX1
INDEX ON COD_CON + VALOR_CON TO INDCX2
INDEX ON COD_CON + COD_CLI TO INDCX3
INDEX ON DTEM_CON TO INDCX4
SET INDEX TO INDCX1, INDCX2, INDCX3, INDCX4
ELSE
SELECT 5
USE CAIXA ALIAS CAIXA
SET INDEX TO INDCX1, INDCX2, INDCX3, INDCX4
ENDIF
IF !FILE("INDCA1.IDX")
SELECT 2
USE CARNE ALIAS CARNE
INDEX ON NUM_PAR TO INDCA1
INDEX ON COD_CON TO INDCA2
INDEX ON COD_CLI TO INDCA3
INDEX ON DTVEN_PAR + NUM_PAR TO INDCA4
INDEX ON COD_CON + COD_CLI TO INDCA5
INDEX ON COD_CON + NUM_PAR TO INDCA6
SET INDEX TO INDCA1, INDCA2, INDCA3, INDCA4, INDCA5, INDCA6
ELSE
SELECT 2
USE CARNE ALIAS CARNE
SET INDEX TO INDCA1, INDCA2, INDCA3, INDCA4, INDCA5, INDCA6
ENDIF
IF !FILE("INDCH1.IDX")
SELECT 6
USE CHEQUE ALIAS CHEQUE
INDEX ON NUM_CH TO INDCH1
INDEX ON COD_CLI TO INDCH2
INDEX ON NUM_CH + COD_CLI TO INDCH3
INDEX ON NUM_CH + COD_CON TO INDCH4
INDEX ON COD_CON TO INDCH5
SET INDEX TO INDCH1, INDCH2, INDCH3, INDCH4, INDCH5
ELSE
SELECT 6
USE CHEQUE ALIAS CHEQUE
SET INDEX TO INDCH1, INDCH2, INDCH3, INDCH4, INDCH5
ENDIF
SET DELETED ON
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WSOMA := 0
WCOD_CLI := 0
WNOME_CLI := SPACE(30)
WEND_CLI := SPACE(30)
WBAIRRO_CLI := SPACE(15)
WCID_CLI := SPACE(20)
WUF_CLI := SPACE(02)
WRG_CLI := SPACE(12)
WCPF_CLI := SPACE(14)
WLIMITE_CLI := 0
WPAGTO := 0
WPARCELAS := 0
WCOD_CON := 0
WDTEM_CON := DATAATU
WENTRADA := 0
WVL_TOT_CON := 0
WVL_DES_CON := 0
WVL_LIQ_CON := 0
WNUM_PAR := 0
WVL_PAR := 0
WDTVEN_PAR := DATAATU
WVL_PAR_PG := 0
WDT_PAR_PG := DATAATU
WOBS_CON := SPACE(38)
WOBS1_CON := SPACE(38)
WOBS2_CON := SPACE(38)
WOBS3_CON := SPACE(38)
WTP_PG_CON := 0
WCOD_VEN := 0
WSITUA_CLI := SPACE(1)
WULTIMA := 0
WDESC1_MEN := SPACE(30)
WDESC2_MEN := SPACE(30)
WPOSCARNE := 0
WCOD_UNICO := 0
WCONF := "S"
JANELA(02,00,08,79," S I S C R E D I ")
COR("MENU")
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@ 04,02 SAY "Cliente.:"
@ 05,02 SAY "Endereco:"
@ 06,02 SAY "Bairro..: Cidade:"
@ 07,02 SAY "CPF.....: RG....:"
@ 03,67 TO 07,78
@ 04,68 SAY " Contrato "
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@ 09,02 SAY "---------- M E N U ------------- ------------ PARCELAMENTOS ------------"
@ 10,02 SAY " "
@ 11,02 SAY " "
@ 12,02 SAY " "
@ 13,02 SAY " "
@ 14,02 SAY " "
@ 15,02 SAY " "
@ 16,02 SAY " "
@ 17,02 SAY " "
@ 18,02 SAY " "
@ 19,02 SAY " ---- POSIۂO FINANCEIRA DO CLIENTE ----"
@ 20,02 SAY " "
@ 21,02 SAY " "
@ 08,01 TO 22,38
@ 08,39 TO 17,78
@ 18,39 TO 22,78
SELE CONTRATO
SET ORDER TO 1
GO BOTTOM
WCOD_CON := COD_CON + 1
WCOD1_CON := WCOD_CON
SELE CLIENTE
SET ORDER TO 1
@ 04,12 GET WCOD_CLI VALID (WCOD_CLI>0) PICT "999999"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
@ 05,71 SAY WCOD_CON PICT "999999"
@ 06,68 SAY WDTEM_CON PICT "@D"
SEEK WCOD_CLI
IF FOUND()
WNOME_CLI := NOME_CLI
WEND_CLI := END_CLI
WCID_CLI := CID_CLI
WBAIRRO_CLI := BAIRRO_CLI
WUF_CLI := UF_CLI
WRG_CLI := RG_CLI
WCPF_CLI := CPF_CLI
WSITUA_CLI := SITUA_CLI
WLIMITE_CLI := LIMITE_CLI
WPENDENTE := "P"
WDADOS1_CLI := DADOS1_CLI
WDADOS2_CLI := DADOS2_CLI
WDADOS3_CLI := DADOS3_CLI
@ 04,20 SAY WNOME_CLI PICT "@!"
@ 05,12 SAY WEND_CLI PICT "@!"
@ 06,12 SAY WBAIRRO_CLI PICT "@!"
@ 06,36 SAY WCID_CLI PICT "@!"
@ 06,62 SAY "-"
@ 06,64 SAY WUF_CLI PICT "@!"
@ 07,12 SAY WCPF_CLI PICT "999.999.999-99"
@ 07,36 SAY WRG_CLI PICT "@!"
ELSE
BEEP()
MENSAGEM("Cliente nÆo Cadastrado",2)
LOOP
ENDIF
POSFIN()
POSFINRODAPE()
DO WHILE .T.
COR("MENU")
// 1 2 3 4 5 6 7 8
// 12345678901234567890123456789012345678901234567890123456789012345678901234567890
@ 09,02 SAY "---------- M E N U ------------- ------------ PARCELAMENTOS ------------"
@ 10,02 SAY " "
@ 11,02 SAY " "
@ 12,02 SAY " "
@ 13,02 SAY " "
@ 14,02 SAY " "
@ 15,02 SAY " "
@ 16,02 SAY " "
@ 17,02 SAY " "
@ 18,02 SAY " "
@ 19,02 SAY " ---- POSIۂO FINANCEIRA DO CLIENTE ----"
@ 20,02 SAY " "
@ 21,02 SAY " "
@ 08,01 TO 22,38
@ 08,39 TO 17,78
@ 18,39 TO 22,78
@ 11,03 PROMPT " VENDA · VISTA "
@ 12,03 PROMPT " VENDA C/CHEQUE PR