'Nome       : StdFac.imp
'Tipo       : LST
'Data       : 2009/05/26
'Versao     : 3.2
'Descricao  : Formato de documento tipo Factura - Modo texto

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 3.2  2009/05/26 ---------------------------------------------------
'Sequencias para cores e tamanhos (AGP)

'- Versao : 3.1  2009/01/16 --------------------------------------------------
'Sequencias para Ecovalor (ECO_ART e ECO_DIS)

'- Versao : 3.0a  2008/11/27 --------------------------------------------------
'Lotes e preparacao para contabilizacao

'- Versao : 3.0   2007/??/?? --------------------------------------------------
'Cosmetica


'==============================================================================
#DEF - Definicao global do documento
'==============================================================================
Caracteres invalidos             [CarInv]=#
##


'==============================================================================
#ESP - Campos especificos
'==============================================================================
Especifico 1                      [EspOp1]=Opcao 1
Especifico 2                      [EspOp2]=Opcao 2
Limites a listar                  [EspLim]=?

'Artigos fixos a recolher       [DocArtFix]=*:*,PORTES,MOB:1
'Formato para definicao de artigos fixos:
' [DocArtFix]=art1:max1,art2:max2, ...
'              |    |
'              |    +-> Vezes a recolher (maximo)
'              |        Se nao for indicado e considerado 1 (neste caso nao usar o separador ':')
'              |        Se for indicado '*' nao e limitado o numero de vezes de recolha
'              |
'              +------> Artigo fixo a usar.
'                       Se for indicado '*' pode ser usado qualquer artigo
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Nome                       [DocNom]=Factura
'Vias                       [DocVia]=Original;Duplicado
'Vias                       [DocVia]=Original;Duplicado,2;Triplicado
Vias                       [DocVia]=Original unico

Tipo                       [DocTip]=
Dados especificos          [DocEsp]=ESP1,FAC

'formato
Impressora                 [DocPrt]=
'Impressora                 [DocPrt]=PR01

Linhas por pagina          [DocLpg]=15
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=3


'funcoes de listagem
Listar cabecalho            [FxCAB]=DocCab
Listar linhas               [FxLIN]=DocLin; Nor; Ajt; Txl; Med,2; Pmo; Doc; Cor; Ide; Acmp; Cmp; Lot,2; Eco_Art; Eco_Dis; Agp
Listar fim                  [FxFIM]=DocFim
##


'==============================================================================
'#DOC - Configuracao do documento
'==============================================================================
'Nome                       [DocNom]=Guia Remessa
'Vias                       [DocVia]=Original;Copia
'Tipo                       [DocTip]=
'Personalizacao             [DocPer]=
'Dados especificos          [DocEsp]=ESP1,FAC
'Dados especificos          [DocEsp]=ESP2,GRM
'
''formato
'Impressora                 [DocPrt]=
''Impressora                 [DocPrt]=PR02
'Linhas por pagina          [DocLpg]=20
'Formato do papel           [DocPap]=72L
'Ajustar pagina             [DocApg]=3
'
''funcoes de listagem
'Listar cabecalho            [FxCAB]=DocCab
'Listar linhas               [FxLIN]=
'Listar fim                  [FxFIM]=DocFim
'##


'==============================================================================
#VAR - Variaveis
'==============================================================================
Pag      = Doc_CntPag
DataExt  = FrmVal$(Sig_DtHoje,45,0)

'descricao da empresa 
EmpNome  = Emp_Inf_Nome$
EmpMorada= Emp_Inf_Morada$
EmpLocal = Emp_Inf_Local$
EmpCpost = Emp_Inf_Cpost$
EmpTel   = Emp_Inf_Telef$
EmpFax   = Emp_Inf_Fax$
EmpCtrb  = Emp_Inf_Contrib$
EmpTps   = Emp_Inf_NatJur$
EmpReg   = Emp_Inf_NumReg$
EmpCapSoc= FrmVal$(Emp_Inf_CapSoc,21,10.2)

'indicacao do destinatario do documento
Ct       = Cta_Mst_Ct$
Nome     = VarAlt$("Enc_Mst","Cta_Mst_Nome$")
Morada   = VarAlt$("Enc_Mst","Cta_Ang_Morada$")
Local    = VarAlt$("Enc_Mst","Cta_Ang_Local$")
Cpost    = VarAlt$("Enc_Mst","Cta_Ang_Cpost$")
Ctrb     = VarAlt$("Enc_Mst","Cta_Mst_Ctrb$")

'linhas do documento
LinArt   = Stc_Mst_Art$
LinOpcCor= TxIde$(Enc_Mov_Opc$,"COR")   
ArtIde   = TxIde$(Enc_Mov_Opc$,"OPCIDE")   
LinNome  = EncArtIde$("") 
LinQu    = FrmVal$(Doc_Art_Qu,21,10.3)
Uni      = Stc_Mst_Unid$
LinDesco = Enc_Mov_Desco$
Iva      = IvaTax("A")
Portes   = Portes$

LinLiq   = FrmVal$(Doc_Art_Liq,21,10.2)
LinPrc   = StcPrcFrm$(10,Doc_Art_Prc)

LinPrc2    = FrmVal$(MoeCnv("N",Doc_Art_Prc,Enc_Mst_Moeda,2),21,10.2)
LinLiq2    = FrmVal$(MoeCnv("N",Doc_Art_Liq,Enc_Mst_Moeda,2),21,10.2)
MoedaExt   = "Valores na moeda Euro :"

LinPrcEsc  = FrmVal$(MoeCnv("N",Doc_Art_Prc,Enc_Mst_Moeda,98),21,10.2)
LinLiqEsc  = FrmVal$(MoeCnv("N",Doc_Art_Liq,Enc_Mst_Moeda,98),21,10.2)
TxMoedaEsc = "Valores em escudos :"

LinMedidas = Enc_Mov_MedTxt$+" - "+Enc_Mov_MedVal
Medidas2   = Enc_Mov_MedVal*Doc_Art_Qu

'valores de iva/taxas do documento
IvaI0    = FrmVal$(Ado_Tot_IvaIse,21,10.2)
IvaT1    = FrmVal$(IvaTax(1),21,2.0)
IvaI1    = FrmVal$(AdoIvaInc("T",1),21,10.2)
IvaV1    = FrmVal$(AdoIvaVal("T",1),21,10.2)
IvaT2    = FrmVal$(IvaTax(2),21,2.0)
IvaI2    = FrmVal$(AdoIvaInc("T",2),21,10.2)
IvaV2    = FrmVal$(AdoIvaVal("T",2),21,10.2)
IvaT3    = FrmVal$(IvaTax(3),21,2.0)
IvaI3    = FrmVal$(AdoIvaInc("T",3),21,10.2)
IvaV3    = FrmVal$(AdoIvaVal("T",3),21,10.2)
IvaT4    = FrmVal$(IvaTax(4),21,2.0)
IvaI4    = FrmVal$(AdoIvaInc("T",4),21,10.2)
IvaV4    = FrmVal$(AdoIvaVal("T",4),21,10.2)

'totais do documento
DocDesco = FrmVal$(Ado_Tot_Desco,21,13.2)
DocIlq   = FrmVal$(Ado_Tot_Ilq,21,13.2)
DocLiq   = FrmVal$(Ado_Tot_Liq,21,13.2)
DocPort  = FrmVal$(Ado_Tot_Ext,21,13.2)
DocIvaSuj= FrmVal$(Ado_Tot_IvaSuj,21,13.2)
DocInc   = FrmVal$(Ado_Tot_Inc,21,13.2)
DocIva   = FrmVal$(Ado_Tot_Iva,21,13.2)
DocIlq   = FrmVal$(Ado_Tot_Ilq,21,13.2)
DocLiq   = FrmVal$(Ado_Tot_Liq,21,13.2)
DocTot   = FrmVal$(Ado_Tot_Tot,21,13.2)

'conversão de moeda
DocEurTot = DocEurTot$
DocEurCmb = DocEurCmb$

'informacoes sobre o documento
Vend      = "("+Enc_Mst_Vend+") "+EmpTabCon$("Vend",Enc_Mst_Vend,"Nome")
Cpag      = EmpTabCon$("Cpag",Enc_Mst_CpagCod,"Des")

DocNome   = Doc_Ide_Nome$
'DocNome   = Doc_Ide_Sdoc$

DocNum    = FrmNdo$("",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)
DocVia    = Doc_Ide_Via$
DocDtl    = FrmVal$(Doc_Ide_Dtl,44,0)
DocDtv    = FrmVal$(Doc_Ide_Dtv,44,0)
DocOrg    = VarAlt$("ENC_MST","Emp_Inf_Local$")
DocDest   = VarAlt$("ENC_MST","Cta_Ang_Local$,LocEnt$")
Viatura   = TxIde$(Enc_Mst_Opc$,"MAT")
HorSai    = FrmVal$(Enc_Mst_HrSai,53,0)

DocRcNum  = DocRcNum$
DocRcDtl  = DocRcDtl$
DocRcDtv  = DocRcDtv$

'listar documentos
DocIde    = Enc_Mst_Tdoc$+" "+FrmNdo$("44",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)
DocVl     = FrmVal$(Doc_Tot_Tot,21,13.2)
pIvaI1    = FrmVal$(IvaInc("T",1),21,10.2)
pIvaV1    = FrmVal$(IvaVal("T",1),21,10.2)
pDocIva   = FrmVal$(Doc_Tot_Iva,21,13.2)
pDocTot   = FrmVal$(Doc_Tot_Tot,21,13.2)

LinInf1   = LinInf1$
TotalAbv1 = TotalAbv1$
TotalAbv2 = TotalAbv2$

Ecovalor  = FrmNum$(13.2,CtpVl(93,"T"))              'valor total ecovalor
##


'==============================================================================
#SEQ - Sequencias para recolha de artigos
'==============================================================================
'------------------------------------------------------------------------------
'#NOR - Tipo Normal
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=NOR
Codigos validos            [ID1]=*
Codigos invalidos          [ID0]=PORTE,MOBRA

'Modos de uso               [IDM]=Rec,Cor

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO
'Campo opcional              [E]=OPC Var$,Descricao,Tipo(A/N)+Dig
Quantidade                   [E]=QU; ESC:LPL
'Quantidade 2                [E]=QU2
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA

'Funcao e Mensagem (MsgBox)   [E]=FxExe UtzMsgBox
'Funcao e Mensagem (Sbar)     [E]=FxExe UtzMsgSbar
'Mensagem em MsgBox           [E]=MsgBox "",Titulo,Linha1|Linha2
'Mensagem em Status Bar       [E]=MsgSbar 1,Msg painel 1
'Esperar (segundos)           [E]=EspSeg 2

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
'Campo opcional 1            [E]=OPC 1
Quantidade                   [E]=QU
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#LOT - Tipo Lotes
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=LOT
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO

'Campo opcional              [E]=OPC Var$,Descricao,Tipo(A/N)+Dig

'Quantidade                   [E]=QU; ESC:LPL
'Quantidade 2                [E]=QU2
Lotes                        [E]=LOTSEL; ESC:LPL

Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
'Campo opcional 1            [E]=OPC 1
'Quantidade                   [E]=QU

Lotes                        [E]=LOTSEL; ESC:LPL
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#COR - Linha com campos opcionais 
'------------------------------------------------------------------------------
' Deficinao de Campos opcionais  ex:Cor

' linha para sequencia                     [E]=OPC Var$,Descricao,Tipo(A/N)+Dig
'               Campo opcional Cor         [E]=OPC COR,Cor escolhida,A15

' definir a linha no cabecalho do documento e no documento com o nome "COR"
'
' Indicar no artigo o tipo de linha da identificacao de sequencia 
' neste caso "COR"
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=COR
Codigos validos            [ID1]=*
Codigos invalidos          [ID0]=PORTE,MOBRA
'Modos de uso               [IDM]=Rec,Cor

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO
'Recolha manual               [E]=MRE 2
Campo opcional 1             [E]=OPC COR,Cor,A15
Campo opcional 2             [E]=OPC XYZ,Opcao XYZ,A5
Quantidade                   [E]=QU; ESC:LPL
Quantidade 2                 [E]=QU2
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
'Campo opcional 1            [E]=OPC 1
Quantidade                   [E]=QU
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#PMO - Tipo Valor total (portes e Mao de obra)
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=PMO
Codigos validos            [ID1]=PORTE,MOBRA
Codigos invalidos          [ID0]=

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA
Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

Inicio de alteracao    [E,ALT  ]=ALT
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#MED - Tipo Medidas
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=MED
Codigos validos            [ID1]=MED
Codigos invalidos          [ID0]=

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO
Quantidade                   [E]=QU
Medidas (altera se nulo)     [E]=MED
'Medidas (forca alteracao)    [E]=MED ALT
'Esperar (segundos)           [E]=EspSeg 4
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA
Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

Inicio de alteracao    [E,ALT  ]=ALT
Medidas (forca alteracao)    [E]=MED ALT
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#TXL - Tipo Texto livre
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=TXL
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=
'Modos de uso               [IDM]=Rec:RTX; Alt:RTX; Cor:RTX

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Texto                  [E,RTX  ]=TXL
Recolha automatica           [E]=RAUTO
Confirmar linha              [E]=CFL; CF2:RTX, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#IDE - Linha artigo com nome livre 
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=IDE
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=
'Modos de uso               [IDM]=Rec,Cor

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha manual               [E]=MRE 2
Campo opcional 1             [E]=OPC OPCIDE,Nome,A30
Quantidade                   [E]=QU; ESC:LPL
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
Quantidade                   [E]=QU
Preco                        [E]=PRC 0,-1
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#ACMP - Artigo composto
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=ACMP
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=

'Modos de uso               [IDM]=Rec,Cor

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO ART:CMP=101
Quantidade                   [E]=QU; ESC:LPL
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
Quantidade                   [E]=QU
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#CMP - Componente (Artigo de composicao)
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=CMP
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Composicao    [FX,CMP ]=CMP; RCMP

Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO
Quantidade                   [E]=QU; ESC:LPL
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
Quantidade                   [E]=QU
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM

Funcao: Rec. Compos.   [FX,RCMP]=*
Recolha automatica           [E]=RAUTO

'Quantidade                   [E]=CMP_QU
Quantidade                   [E]=CMP_QT
'Preco                        [E]=CMP_VU
Preco=0                      [E]=CMP_VZ

Iva                          [E]=IVA
Confirmacao automatica       [E]=CNF 1
Confirmar linha              [E]=CFL
Total                  [E,TOT  ]=TOT
Registar                     [E]=REG
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#ECO_ART - Artigos com Ecovalor
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=ECO_ART
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=

'Modos de uso               [IDM]=Rec,Cor

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO ART:SBT
Quantidade                   [E]=QU; ESC:LPL
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL

Guardar quantidade           [E]=MEM_G ECO.QU,[QUR]

Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
Quantidade                   [E]=QU
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#ECO_DIS - Ecovalor discriminado
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=ECO_DIS
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=

'Modos de uso               [IDM]=Rec,Cor

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO

Activar modo automatico      [E]=AUT 1
Consultar quantidade         [E]=MEM_C ECO.QU,[QUR]
Quantidade                   [E]=QU; ESC:LPL
Desactivar modo automatico   [E]=AUT 0

Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA

Funcao : Executar      [FX,CMP ]=*
Recolha automatica           [E]=RAUTO

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
Quantidade                   [E]=QU
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM


'------------------------------------------------------------------------------
'#AGP - Artigo/Grupo
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=AGP
Codigos validos            [ID1]=
Codigos invalidos          [ID0]=

Funcao : Recolha       [FX,REC ]=REC; EXE
Funcao : Corrigir      [FX,COR ]=COR; EXE
Funcao : Executar      [FX,EXE ]=*
Recolha automatica           [E]=RAUTO
Quantidade                   [E]=QUAGP; ESC:LPL
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA

Total                  [E,TOT  ]=TOT
Confirmar linha              [E]=CFL; CF2:ALT, ESC:LPL
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
Quantidade                   [E]=QUAGP
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

'anulacao
Limpar linha           [E,LPL  ]=LPL
Fim de sequencia             [E]=FIM
##


'==============================================================================
'- Recolha do Cabecalho do documento ------------------------------------------
'==============================================================================
'==============================================================================
#PAGDEF - Definicao de paginas
'==============================================================================
Pagina inicial      [PagIni]=1
Campo inicial       [CmpIni]=2
##


'==============================================================================
#PAG  Dados para Documento    'Definicao da pagina 
'==============================================================================
'mo asp x   y  identificacao      di  variavel                            frm   dv ope
30,-10, 20, 50,"Conta          " ,100,Cta_Mst_Ct$                         ,30.0,250
31, 10, 20, 80,"Nome           " ,100,VarAlt$("ENC_MST","Cta_Mst_Nome$")  ,30.0,250
31, 10, 20,110,"Morada         " ,100,VarAlt$("ENC_MST","Cta_Ang_Morada$"),30.0,250
31, 10, 20,140,"Localidade     " ,100,VarAlt$("ENC_MST","Cta_Ang_Local$") ,30.0,250
31, 10, 20,170,"Codigo Postal  " ,100,VarAlt$("ENC_MST","Cta_Ang_Cpost$") ,30.0,250
31, 10, 20,200,"Vendedor       " ,100,Enc_Mst_Vend                        , 2.0, 50
30, 10, 20,230,"Contribuinte   " ,100,VarAlt$("ENC_MST","Cta_Mst_Ctrb$")  ,12.0,130
30,110, 20,260,"Cond. Pagamento" ,100,Enc_Mst_CpagCod                     , 2.0, 50

31, 10, 390, 50,"Desconto a usar  ",100,VarAlt$("ENC_MST","Cta_Ang_Desco$,Desco")   ,30.0,25
31, 10 ,390, 80,"Descrição p/ doc ",100,TxIde$(Enc_Mst_Opc$,"DOC_DESCR")           ,08.0, 90
31, 44, 390,110,"Data             ", 50,Enc_Mst_Dtl                                , 8.0,100
10, 53, 390,140,"Hora de saida    ",100,Enc_Mst_HrSai                              , 4.0,100
31, 10, 390,170,"Local de carga   ",100,VarAlt$("ENC_MST","Emp_Inf_Local$")        ,30.0,100
31, 10, 390,200,"Local de entrega ",100,VarAlt$("ENC_MST","Cta_Ang_Local$,LocEnt$"),30.0,100
31, 10, 390,230,"Matricula        ",100,TxIde$(Enc_Mst_Opc$,"MAT")                 ,30.0,100
31, 10, 240,260,"Informação Livre ",100,TxIde$(Enc_Mst_Opc$,"INF1")                ,40.0,250

##

'30, 10,430,100,100,  8.0,"Texto   : ",150,Variavel,Ope
' |   |  |   |   |    |      |          |    |       |
' |   |  |   |   |    |      |          |    |       +--> Opcao especial
' |   |  |   |   |    |      |          |    +----------> Variavel
' |   |  |   |   |    |      |          +---------------> Dimensao da identificacao
' |   |  |   |   |    |      +--------------------------> Texto Informativo
' |   |  |   |   |    +--------------> Formato do valor
' |   |  |   |   +-------------------> Dimensao
' |   |  |   +-----------------------> Coluna
' |   |  +---------------------------> Linha
' |   +------------------------------> Tipo de valor/Aspecto
' +----------------------------------> Controlo de recolha
'
'1o parametro - modo/controlo de recolha (<0 nao pode alterar)
'2o parametro - tipo dos dados/aspecto
'3o parametro - linha
'4o parametro - coluna
'5o parametro - dimensao da identificacao
'6o parametro - formato do valor (inteiros.decimais)
'7o parametro - texto informativo
'8o parametro - variavel
'
'Controlo de recolha : 1x - Pode modificar para registo novo
'                      2x - Pode modificar para alteracao de registo
'                      3x - Igual a 1x+2x
'                      ?0 - Nao cria variavel
'                      ?1 - Cria variavel
'
'Notas : O campo 'Opcao especial' e opcional


'==============================================================================
#PGM - Funcoes para impressao do documento
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)


'------------------------------------------------------------------------------
'Inicializacao do documento
'------------------------------------------------------------------------------
Sub DocCabIni 'inicializacao
'definicao das moedas para valores
Moeda1    = Enc_Mst_Moeda                  'moeda do documento
Moeda2    = 98                             'moeda para contravalor (Escudo)

'Contravalor em Euro quando a moeda e escudo
If Moeda1=98 then                          'documento em escudos?
   Moeda2=1                                'apresentar contravalor em Euro
end if

'Configuracao para as linhas do documento
ListarMoeEur=0                              'listar 2a linha com moeda euro
ListarMoeEsc=0                              'listar 2a linha com moeda escudo
LstEurEsc1Lin=0                             'listar uma linha com moeda euro e escudo

'variaveis para totais
MoedaAbv1$ = EmpTabCon$("MOEDA",Enc_Mst_Moeda,"ABRV")      'abreviatura moeda documento

TotalAbv1$ = "Total "+EmpTabCon$("MOEDA",Enc_Mst_Moeda,"ABRV")  
TotalAbv2$ = "Total "+EmpTabCon$("MOEDA",Moeda2,"ABRV")  

DocEurCmb$ = FrmVal$(EmpTabCon$("MOEDA",Enc_Mst_Moeda,"CMBEUR"),21,3.3)

DocRcNum$ = FrmNdo$("",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)
DocRcDtl$ = FrmVal$(Doc_Ide_Dtl,44,0)
DocRcDtv$ = FrmVal$(Doc_Ide_Dtv,44,0)
Portes$  = FrmVal$(0,21,13.2)                 'limpar valor portes

LinInf1$  = TxIde$(Enc_Mst_Opc$,"INF1")
end sub


'------------------------------------------------------------------------------
' Cabecalho do documento
'------------------------------------------------------------------------------
Sub DocCab 'cabecalho do documento
print PrtCmd$("[10CPILN]")
?@EmpNome                                                                     #
?@EmpMorada                                   @DocNome                        #
?@EmpLocal                                    NUMERO DOCUMENTO  : @DocRcNum   #
?@EmpCpost                                    VIA DOCUMENTO     : @DocVia     #
?                                             DATA              : @DocRcDtl   #
?                                             DATA VENCIMENTO   : @DocRcDtv   #
print PrtCmd$("[16CPILN]")
?Contribuinte No   : @EmpCtrb                                                 #
?Tipo de sociedade : @EmpTps                                                  #
?Registo           : @EmpReg                                                  #
?Capital Social    : @EmpCapSoc                                               #
print PrtCmd$("[10CPILN]");
?                                       +--                             --+#
?                                       |                                 |
?                                         @Nome                           #
?Telefone : @EmpTel                       @Morada                         #
?Fax      : @EmpFax                       @Local                          #
?                                         @Cpost                          #
?                                       |                                 |
?                                       +--                             --+#
?COD. CLIENTE      : @Ct                                                    #
?V/No CONTRIBUINTE : @Ctrb                                                  #
?VENDEDOR          : @Vend                                                  #
?COND.DE PAGAMENTO : @Cpag                                  Folha No : @Pag #
? @LinInf1                                                         #
print PrtCmd$("[16CPILN]")
?====================================================================================================================================
? Codigo                Descricao                     Quantidade      Uni     Preco Unitario    Desconto       Total Liquido     IVA
?====================================================================================================================================
end sub


'------------------------------------------------------------------------------
' Linhas do Documento
'------------------------------------------------------------------------------
Sub DocLinNor 'artigos tipo normal
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
end sub


Sub DocLinLot 'artigos tipo lote
res = EncLotLer(Enc_Mov_Lote$)                      'ler lote

?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
print tab(19) "Lote: " Enc_LOT_Lot$
'print tab(19) "ADI:  " Enc_LotExt_Adi_Txt$
end sub


Sub DocLinIde 'artigos tipo nome livre
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
end sub


Sub DocLinCor 'Exemplo campos opcionais
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
?Cor escolhida   : @LinOpcCor
end sub


Sub DocLinMed 'artigos com medidas
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
?                  Dimensao do artigo  @LinMedidas         Total Qu x Medias =   @Medidas2        #
end sub


Sub DocLinPmo 'artigos tipo Portes e Mao-de-obra
'?    @LinNome                                                                                                    @LinLiq        @Iva

'guardar valor para imprimir no final do documento
Portes$  = FrmVal$(Doc_Art_Liq,21,13.2)
'?   @Portes                 #
end sub


Sub DocLinEco_Art 'artigos tipo ecovalor
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
end sub


Sub DocLinEco_Dis 'ecovalor dos artigos
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva
end sub


Sub DocLinAgp 'artigos tipo grupo
?@LinArt           @LinNome                           @LinQu          @Uni     @LinPrc           @LinDesco       @LinLiq        @Iva

print "Grupo: " Enc_Mov_Opc$

'for zer = 0 to 1
'print
res = AgpAsp(">", "6;Z=P", "Total")
nli = AgpPrp(Enc_Mov_Art$, Enc_Mov_Opc$, zer)

pqu = 20

tco$ = AgpLin$(0)
print tab(pqu) tco$

for li = 1 to nli
ide$ = AgpIde$(li)
txl$ = AgpLin$(li)
print tab(05) ide$;
print tab(pqu) txl$
next

tot$ = AgpTot$("")
print tab(05) "Totais";
print tab(pqu) tot$
print
'next
end sub


Sub DocLinTxl 'artigos tipo texto livre
Print Tab(19) Enc_Mov_Div$
end sub


Sub DocLinAjt 'ajuste de linhas
?
end sub


Sub DocLinDoc 'linha de documento
? Documento : @DocIde            @pDocTot             @pDocIva               #
'? Iva 1                          @pIvaI1              @pIvaV1                #
end sub


'------------------------------------------------------------------------------
' Final do Documento
'------------------------------------------------------------------------------
Sub DocFimAjt 'ajuste de fim de pagina
print PrtCmd$("[SP]")
end sub


Sub DocFim 'total do documento
DocEurTot$ = FrmVal$(MoeCnv("N",Doc_Tot_Tot,Enc_Mst_Moeda,Moeda2),21,13.2)
print PrtCmd$("[10CPILN]")
?=============================================================================
? IVA  Taxa   V.Incidencia       I.V.A.
?=============================================================================
?  0     0     @IvaI0                      | TOTAL ILIQUIDO : @DocIlq        #
?  1    @IvaT1 @IvaI1        @IvaV1        | DESCONTOS      : @DocDesco      #
?  2    @IvaT2 @IvaI2        @IvaV2        | TOTAL LIQUIDO  : @DocLiq        #
?  3    @IvaT3 @IvaI3        @IvaV3        |
?  4    @IvaT4 @IvaI4        @IvaV4        |                :       
?==========================================|                :                
'? LOCAL ENTREGA  : @DocDest                |                               
? LOCAL ENTREGA  : @DocDest                | ECOVALOR       : @Ecovalor      #
? LOCAL DE CARGA : @DocOrg                 | PORTES         : @Portes        #
? HORA DE SAIDA  : @HorSai                 |                                 #
? VIATURA        : @Viatura                | TOTAL DE IVA   : @DocIva        #
?                                          |==================================
?   ** PROCESSADO POR COMPUTADOR **        | @TotalAbv1     : @DocTot        #
?                                          |                                 #
?=============================================================================


'Sub DocFim 'total do documento com ecovalor
'DocEurTot$ = FrmVal$(MoeCnv("N",Doc_Tot_Tot,Enc_Mst_Moeda,Moeda2),21,13.2)
'print PrtCmd$("[10CPILN]")
'?=============================================================================
'? IVA  Taxa   V.Incidencia       I.V.A.
'?=============================================================================
'?  0     0     @IvaI0                      | TOTAL ILIQUIDO : @DocIlq        #
'?  1    @IvaT1 @IvaI1        @IvaV1        | DESCONTOS      : @DocDesco      #
'?  2    @IvaT2 @IvaI2        @IvaV2        | TOTAL LIQUIDO  : @DocLiq        #
'?  3    @IvaT3 @IvaI3        @IvaV3        |
'?  4    @IvaT4 @IvaI4        @IvaV4        |                :       
'?==========================================|                :                
'? LOCAL ENTREGA  : @DocDest                | ECOVALOR       : @Ecovalor      #
'? LOCAL DE CARGA : @DocOrg                 | PORTES         : @Portes        #
'? HORA DE SAIDA  : @HorSai                 |                                 #
'? VIATURA        : @Viatura                | TOTAL DE IVA   : @DocIva        #
'?                                          |==================================
'?   ** PROCESSADO POR COMPUTADOR **        | @TotalAbv1     : @DocTot        #
'?                                          |                                 #
'?=============================================================================

'ExtNl=NumExtPrp("77,77","=")                      'preparar extenso
'print NumExt$(1 ,Ado_Tot_Tot,"ESC",3)             'linha 1 de extenso
'print NumExt$(2)                                  'linha 2 de extenso


'tmp$=left$(Cta_Ang_Grupo$,2)
'print PrtCmd$("[10CILN]")            
'if tmp$="AA" then
'   print tab(20) "Este cliente e do tipo AA"
'else
'   print tab(25) "Este cliente e de tipo desconhecido"
'end if

print PrtCmd$("[SP]")                             'terminar pagina
end sub


'------------------------------------------------------------------------------
' Funcoes diversas
'------------------------------------------------------------------------------
Sub UtzMsgSbar 'mensagem na status bar
'zona=0                                'numero da zona
'msg$="Mensagem ao utilizador"         'mensagem

'upc=Stc_Acm_Upc                       'UPC
'prc=Doc_Art_Prc                       'preco
'maV=prc-upc                           'margem em valor
'if maV<>0 then
'   if prc=0 then
'      txm$="0 (Prc=0)
'   else
'      maP=maV/prc*100                 'calcular %
'      txm$= FrmVal$(maP,21,3.2)+"%"
'    end if
'else
'   txm$="100 (UPC=0)"
'end if

'txi$="  UPC="+str$(upc)+"  Prc="+str$(prc)+"  Dif.="+str$(maV)             
'msg$="Margem: "+txm$+txi$             
end sub


Sub UtzMsgBox 'mensagem
'modo$=""                              'modo da mensagem
'tit$="Titulo da mensagem"             'titulo
'msg$="Mensagem ao utilizador"         'mensagem
'MsgBox modo$,tit$,msg$                'mostrar mensagem
end sub


Sub ConfiguracaoPOS
'Estas informacoes serao colocadas no final do documento

'mostrar mensagem no visor ligado na COM1
x=PcomPrp(1, "COM1", "9600,n,8,1")           'preparar porta
x=PcomEnv(1, "Abrir gaveta")                 'mostrar mensagem

'Abertura de gaveta - modo EPSON
print chr$(27)+"p"+chr$(0)+chr$(10)+chr$(100);    'abrir gaveta
end sub

##
