'Nome       : PosArt.ipw
'Tipo       : LST
'Data       : 2015/08/04
'Versao     : 2.2
'Descricao  : POS - Factura/Recibo

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 2.2   2015/07/16 --------------------------------------------------
'Escrever total quantidades e nome suplementar do artigo

'- Versao : 2.1   2014/10/21 --------------------------------------------------
'Escrever segundo logo no fim do documento

'- Versao : 2.0   2014/10/10 --------------------------------------------------
'Acerto de posicoes de escrita Resumo IVA e Modos de Pagamento

'- Versao : 1.0   2012/04/04 --------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'diversos
Limites a listar                  [EspLim]=?
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Nome                       [DocNom]=Ticket
Vias                       [DocVia]=Original
Tipo                       [DocTip]=
Dados especificos          [DocEsp]=ESP1,FAC

'formato
Impressora                 [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=100
Formato do papel           [DocPap]=48L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Base para documento         [FxDOC]=PosDoc
Listar cabecalho            [FxCAB]=PosCab
Listar linhas               [FxLIN]=PosLin; Nor; Txl
Listar fim                  [FxFIM]=PosFim
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
'- (61) --------------------------------------------------->'Comentario

Pag      = Doc_CntPag                                       'pagina
DataExt  = FrmVal$(Sig_DtHoje,45,0)                         'data dia
Dat      = FrmVal$(Sig_DtHoje,44,0)                         'data dia
vaHor    = FrmHr$("HM",Enc_Mst_HrSai)                       'hora

vaDtl    = FrmDt$("",Enc_Mst_Dtl)                           'data de lancamento
vaHorI   = FrmHs$("HM",Enc_Mst_HrIni)                       'hora de inicio
vaHorF   = FrmHs$("HM",Enc_Mst_HrFim)                       'hora de fim

'dados da empresa 
vaEmpIde = vuEmpIde$                                        'empresa
vaEmpMor = vuEmpMor$                                        'morada
vaEmpLoc = vuEmpLoc$                                        'localidade
vaEmpCpo = vuEmpCpo$                                        'codigo postal
vaEmpTel = vuEmpTel$                                        'telefone
vaEmpFax = vuEmpFax$                                        'fax
vaEmpNif = vuEmpNif$                                        'nif
vaEmpNju = vuEmpNju$                                        'natureza juridica
vaEmpReg = vuEmpReg$                                        'numero de registo
vaEmpCps = vuEmpCps$                                        'capital social

'dados do cliente
vaCliCt  = vuCliCt$                                         'conta
vaCliNom = left$(vuCliNom$,35)                              'nome
vaCliMor = left$(vuCliMor$,35)                              'morada
vaCliLoc = vuCliLoc$                                        'localidade
vaCliCpo = vuCliCpo$                                        'codigo postal
vaCliCtb = vuCliCtb$                                        'contribuinte
vaCliTxl = vuCliTxl$                                        'texto livre

PosNdo   = Enc_Mst_Ndoc$                                    'numero de documento
PosOpe   = Enc_Mst_Oper$                                    'operador

'linhas do documento
vaArtCod = Stc_Mst_Art$                                     'codigo do artigo
vaArtIde = TxIde$(Enc_Mov_Opc$,"OPCIDE")                    'identificacao
vaArtNom = Stc_Mst_Nome1$                                   'nome
vaArtNom2= left$(Stc_Mst_Nome2$,50)                         'nome suplementar
vaArtQua = FrmExe$("NUM","05.3A",Doc_Art_Qu)                'quantidade
vaArtPrc = FrmNum$(10.2,Doc_Art_Prc)                        'preco
vaArtDsc = Enc_Mov_Desco$                                   'desconto
vaArtLiq = FrmNum$(10.2,Doc_Art_Liq)                        'liquido
vaArtDsc = Enc_Mov_Desco$                                   'desconto

'valores com dimensao reduzida
Iva      = FrmNum$(2,IvaTax("A"))                           'taxa de IVA
Iv       = IvaTax("A")+"%"                                  'taxa de IVA
Uni      = Stc_Mst_Unid$                                    'unidade

'valores POS - artigo
vaPosNom = left$(Stc_Mst_Nome1$, 20)                        'nome para talao
vaPosQu  = FrmExe$("NUM","05.3A",Doc_Art_Qu)                'quantidade
vaPosQ   = FrmExe$("NUM","05.3A",Doc_Art_Qu)                'quantidade (variavel reduzida)

vaPosPrc = FrmNum$(-6.2,Doc_Art_Prc)                        'preco
vaPosLiq = FrmNum$(-6.2,Doc_Art_Liq)                        'liquido

'valores POS - totais
vaPosPag = FrmNum$(10.2,vuPosPag)                           'total pago
vaPosTro = FrmNum$(10.2,vuPosTro)                           'troco

'valores de iva
vaIvaT   = FrmNum$(04.0,vuIvaTax)                           'formatar taxa
vaIvaI   = FrmNum$(10.2,vuIvaInc)                           'formatar incidencia
vaIvaV   = FrmNum$(10.2,vuIvaVal)                           'formatar valor

'totais do documento
vaDocDsc    = FrmNum$(10.2,vuDocDsc)                        'valor de desconto
vaDocPort   = FrmNum$(10.2,vuDocPort)                       'portes
vaDocIvaSuj = FrmNum$(10.2,vuDocIvaSuj)                     'sujeito a IVA
vaDocInc    = FrmNum$(10.2,vuDocInc)                        'incidencia de IVA
vaDocIva    = FrmNum$(10.2,vuDocIva)                        'valor de IVA
vaDocIlq    = FrmNum$(10.2,vuDocIlq)                        'valor ilquido
vaDocLiq    = FrmNum$(10.2,vuDocLiq)                        'valor liquido
vaDocTot    = FrmNum$(10.2,vuDocTot)                        'valor total
vaDocQua    = Enc_Mst_Qu                                    'quantidade

'vendedor/operador
vaVnd      = NumTxt$(Enc_Mst_Vend,2)                           'numero
'vaVndNom   = EmpTabCon$("Vend",Enc_Mst_Vend,"Nome")            'nome
vaVndNom   = left$(EmpTabCon$("Vend",Enc_Mst_Vend,"Nome"),17)  'nome


'informacoes sobre o documento
vaDocNum  = FrmNdo$("",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)                     'numero de documento
vaDocNum2 = Enc_Mst_Tdoc$+" "+FrmNdo$("",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)   'identificacao documento

DocVia    = Doc_Ide_Via$                                    'via do documento
DocDtl    = FrmVal$(Doc_Ide_Dtl,44,0)                       'data do documento
DocDtv    = FrmVal$(Doc_Ide_Dtv,44,0)                       'data de vencimento
DocOrg    = VarAlt$("ENC_MST","Emp_Inf_Local$")
DocDest   = VarAlt$("ENC_MST","Cta_Ang_Local$,LocEnt$")

'listar documentos
DocIde    = Enc_Mst_Tdoc$+" "+FrmNdo$("44",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)

'- dados a listar -------------------------------------------------------------
vObs     = usaObs$                                          'observacaoes

'artigo
vaArtCod = vuMovArt$                                        'codigo
vaArtCov = vuMovCov$                                        'codigo formatado
vaArtNom = vuMovNom$                                        'nome

'valores - documento
vaDocQua = FrmNum$(06.2,vuDocQua)                           'quantidade
vaDocVto = FrmNum$(10.2,vuDocVto)                           'valor total
vaDocPag = FrmNum$(10.2,vuDocPag)                           'valor a pagar
vaDocTro = FrmNum$(10.2,vuDocTro)                           'valor de troco

'valores - movimento
vaMovQua = FrmNum$(06.3,vuMovQua)                           'quantidade
vaMovPrc = FrmNum$(06.2,vuMovPrc)                           'preco
vaMovVto = FrmNum$(12.2,vuMovVto)                           'valor

'conta
vaCtCod  = CTA_MST_Ct$                                      'codigo da conta
vaCtNom  = CTA_MST_Nome$                                    'nome

'armazem
vaArzCod = arzCod$                                          'codigo
vaArzCov = arzCov$                                          'codigo formatado
vaArzNom = arzNom$                                          'nome

'vendedor
vaVndCod = vndCod$                                          'codigo
vaVndCov = vndCov$                                          'codigo formatado
vaVndNom = vndNom$                                          'nome

'- diversos -------------------------------------------------------------------
'contagem
toNrg    = FrmNum$(9.0,TotCnt("vaArtCod",0))                'numero de registos - total
s1Nrg    = FrmNum$(9.0,TotCnt("vaArtCod",1))                'numero de registos - subtotal 1
s2Nrg    = FrmNum$(9.0,TotCnt("vaArtCod",2))                'numero de registos - subtotal 2

'valor total
toMovVto = FrmNum$(10.2,Total("vaMovVto",0))                'valor - total
s1MovVto = FrmNum$(10.2,Total("vaMovVto",1))                'valor - subtotal 1
s2MovVto = FrmNum$(10.2,Total("vaMovVto",2))                'valor - subtotal 2


'- adicionais ------------------------------------------------------------------
Matricula = MemMat$                                         'matricula
km        = TxIde$(MemOpc$,"POS_CLI_KM")                    'quilometros

posE = 0
PosFimCxMpg = 0

TotQu = FrmVal$(TotKg,21,5.2)                               'totais - quantidade
##


'==============================================================================
#INC - Inclusao de funcionalidades
'==============================================================================
Variaveis para certificacao       =[ENC_DOC],EncDocCer_Var.inc
Variaveis para IVA                =[ENC_DOC],EncDocCom_Var.inc
##


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


'= estado da sequencia para recolha normal
Funcao : Recolha       [FX,REC ]=REC; EXEREC
Funcao : Executar   [FX,EXEREC ]=*
Recolha automatica           [E]=RAUTO

Modo automatico              [E]=AUT 1
Quantidade                   [E]=QU; ESC:LPL
'Quantidade automatica        [E]=AUTO_QU UNI; ESC:LPL

'Quantidade 2                [E]=QU2
'Preco                        [E]=PRC
Preco                        [E]=PrcProm [ZER=N][PRC=PV1][FRM=4.2]; ESC:LPL
Desconto                     [E]=DES
Iva                          [E]=IVA
Total                    [E,TOT]=TOT

Confirmar linha (automatica) [E]=CFL 1; CF2:ALT, ESC:LPL
'Confirmar linha              [E]=CFL ; CF2:ALT, ESC:LPL

Registar                     [E]=REG

Mostrar artigo               [E]=FxExe Pos_DisArt
Fim de sequencia             [E]=FIM


'= estado da sequencia para correccao de linha
Funcao : Corrigir      [FX,COR ]=COR; EXECOR
Funcao : Executar   [FX,EXECOR ]=*
Recolha automatica           [E]=RAUTO
'Campo opcional              [E]=OPC Var$,Descricao,Tipo(A/N)+Dig
Quantidade                   [E]=QU; ESC:LPL
'Quantidade automatica        [E]=AUTO_QU UNI; ESC:LPL

'Quantidade 2                [E]=QU2
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA
Total                  [E,TOT  ]=TOT

'Confirmar linha (automatica) [E]=CFL 1; CF2:ALT, ESC:LPL
Confirmar linha              [E]=CFL ; CF2:ALT, ESC:LPL

Registar                     [E]=REG

Mostrar artigo               [E]=FxExe Pos_DisArt
Fim de sequencia             [E]=FIM


'= estado da sequencia para alteracao de documento
'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
'Campo opcional 1            [E]=OPC 1
Quantidade                   [E]=QU
Preco                        [E]=PRC
Desconto                     [E]=DES
Iva                          [E]=IVA; TOT

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


'------------------------------------------------------------------------------
' Artigos VBC (valor em codigo de barras)
'------------------------------------------------------------------------------
Identificacao de sequencia [IDS]=VCB
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]=AUTO_QU VCB_QU
Preco                        [E]=AUTO_VU VCB_VU

'Quantidade (unidade)         [E]=AUTO_QU UNI
'Preco (valor total)          [E]=AUTO_VU VCB_VL

Iva                          [E]=IVA
Total                  [E,TOT  ]=TOT
Confirmar linha (automatico) [E]=CFL 1
Registar                     [E]=REG
Fim de sequencia             [E]=FIM

'alterar dados
Inicio de alteracao    [E,ALT  ]=ALT
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
30, 10, 20,200,"Contribuinte   " ,100,VarAlt$("ENC_MST","Cta_Mst_Ctrb$")  ,12.0,130
'31, 10, 20,230,"Vendedor       " ,100,Enc_Mst_Vend                        , 2.0, 50

'30,110, 20,260,"Cond. Pagamento" ,100,Enc_Mst_CpagCod                     , 2.0, 50

'31, 10 ,390,110,"Descr. para Doc ",100,TxIde$(Enc_Mst_Opc$,"DOC_DESCR")   ,08.0, 90
'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
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
'- (13) --->'Comentario
'- (25) --------------->'Comentario
'- (28) ------------------>'Comentario
'- (40) ------------------------------>'Comentario
'- (43) --------------------------------->'Comentario
'- (46) ------------------------------------>'Comentario
'- (49) --------------------------------------->'Comentario
'- (52) ------------------------------------------>'Comentario
'- (55) --------------------------------------------->'Comentario
'- (58) ------------------------------------------------>'Comentario
'- (61) --------------------------------------------------->'Comentario
'- (64) ------------------------------------------------------>'Comentario
'- (67) --------------------------------------------------------->'Comentario
'- (70) ------------------------------------------------------------>'Comentario

'        10        20        30        40
'123456789.123456789.123456789.123456789.


'=============================================================================
'- Comum ---------------------------------------------------------------------
'=============================================================================
Sub FxIni 'funcao de inicializacao
vUsa = 0                                        'azerar variavel 
TotKg = 0
end sub


Sub LogoPrp 'logotipo - preparar
logoUsaEmp = val(CfgDocTipLogo$)                'tipo de logo a usar

'activar logotipo a usar
if logoUsaEmp = 1 then                          'usar logotipo especifico da empresa ?
   logoNom$ = CfgDocNomLogo$                    'nome do logotipo
   logoDba$ = EmpFic$("EMP","Img")              'directorio de imagens na empresa
   logoUsa$ = logoDba$ +"\" + logoNom$          'logotipo a usar - empresa
   logoFic$ = VarTx$(logoUsa$,"R")              'ficheiro do logotipo
end if

if logoUsaEmp = 2 then                          'usar logotipo neutro ?
   logoNom$ = "DocLogo.bmp"                     'nome do logotipo
   logoUsa$ = "[SIG_DIR.DIV]," + logoNom$       'logotipo a usar - comum
   logoFic$ = VarTx$(logoUsa$,"R")              'ficheiro do logotipo
end if

PrWIN AJT_F, 56.7,  56.7                        'ajuste para milimetros
PrWIN AJT_D,-000.0,-280.0                       'deslocamento de ajuste 
PrWIN IMG_F, 1, logoFic$                        'imagem (logotipo)
PrWIN ET,  2                                    'espessura de traco 
end sub


Sub LogoPrp2 'logotipo 2 - preparar
'activar logotipo a usar
logoNom2$ = CfgDocNomLog2$                      'nome do logotipo
logoDba2$ = EmpFic$("EMP","Img")                'directorio de imagens na empresa
logoUsa2$ = logoDba2$ +"\" + logoNom2$          'logotipo a usar - empresa
logoFic2$ = VarTx$(logoUsa2$,"R")               'ficheiro do logotipo

PrWIN AJT_F, 56.7,  56.7                        'ajuste para milimetros
PrWIN AJT_D,-000.0,-280.0                       'deslocamento de ajuste 
PrWIN IMG_F, 2, logoFic2$                       'imagem (logotipo)
PrWIN ET,  2                                    'espessura de traco 
end sub


Sub FxFim 'funcao de finalizacao
PrWIN FON, "REG"                               'limpar registo de fontes
end sub


Sub Lst_AJT 'ajuste
'nada a executar
end sub


'-----------------------------------------------------------------------------
'- [VAR] - Variaveis ---------------------------------------------------------
'-----------------------------------------------------------------------------
Sub PrpVarPos_Com 'preparar variaveis comuns
tabVar$ = "EmpTbDocVar"                                     'tabela de dados

usaIva$ = TabAdiCon$("V", tabVar$, "POS.TIK.OPC.IVA")       'usar IVA

vuDocTro$ = VarCom$("TRO")

call PrpVar_Com                                             'usar variaveis documentos
end sub


Sub PrpVar_Emp 'preparar variaveis da empresa
vuEmpIde$ = Emp_Inf_Nome$                                   'empresa
vuEmpMor$ = Emp_Inf_Morada$                                 'morada
vuEmpLoc$ = Emp_Inf_Local$                                  'localidade
vuEmpCpo$ = Emp_Inf_Cpost$                                  'codigo postal
vuEmpTel$ = Emp_Inf_Telef$                                  'telefone
vuEmpFax$ = Emp_Inf_Fax$                                    'fax
vuEmpNif$ = Emp_Inf_Contrib$                                'nif
vuEmpNju$ = Emp_Inf_NatJur$                                 'natureza juridica
vuEmpReg$ = Emp_Inf_NumReg$                                 'numero de registo
vuEmpCps$ = FrmNum$(10.2,Emp_Inf_CapSoc)                    'capital social
end sub


Sub PrpVar_Cli 'preparar variaveis do cliente
vuCliCt$  = Cta_Mst_Ct$                                     'conta
vuCliNom$ = VarAlt$("Enc_Mst","Cta_Mst_Nome$")              'nome
vuCliMor$ = VarAlt$("Enc_Mst","Cta_Ang_Morada$")            'morada
vuCliLoc$ = VarAlt$("Enc_Mst","Cta_Ang_Local$")             'localidade
vuCliCpo$ = VarAlt$("Enc_Mst","Cta_Ang_Cpost$")             'codigo postal
vuCliCtb$ = VarAlt$("Enc_Mst","Cta_Mst_Ctrb$")              'contribuinte
vuCliTxl$ = VarAlt$("Enc_Mst","Pos_Cli_Nta")                'notas
end sub


Sub PrpVar_Doc 'preparar variaveis do documento
'vuDocQua  = VarCom("Doc_Qua")                               'quantidade
'vuDocVto  = VarCom("Doc_Vto")                               'valor
'vuDocPag  = VarCom("Doc_Pag")                               'valor a pagar
'vuDocTro  = VarCom("Doc_Tro")                               'valor de troco
end sub


Sub PrpVar_Tot 'preparar variaveis de totais do documento
vuDocDsc   = Ado_Tot_Desco                                  'valor de desconto
vuDocPort  = Ado_Tot_Ext                                    'portes
vuDocIvaSuj= Ado_Tot_IvaSuj                                 'sujeito a IVA
vuDocInc   = Ado_Tot_Inc                                    'incidencia de IVA
vuDocIva   = Ado_Tot_Iva                                    'valor de IVA
vuDocIlq   = Ado_Tot_Ilq - Ado_Tot_Iva                      'valor ilquido
vuDocLiq   = Ado_Tot_Liq                                    'valor liquido
vuDocTot   = Ado_Tot_Tot                                    'valor total
end sub


Sub PrpVar_Mov 'preparar variaveis do movimento
'vuMovTli$ = VarCom$("Mov_Tli")                              'tipo de linha
'vuMovArt$ = VarCom$("Mov_Art")                              'artigo
'vuMovNom$ = VarCom$("Mov_Nom")                              'artigo - nome
'vuMovQua  = VarCom("Mov_Qua")                               'quantidade
'vuMovPrc  = VarCom("Mov_Prc")                               'preco
'vuMovVto  = VarCom("Mov_Vto")                               'valor
end sub


Sub PrpVar_Mpg 'preparar variaveis de modos de pagamento
npg       = PosMpgPrp(Enc_Mst_Opc$)                         'preparar modos de pagamento

pagCre = 0                                                  'nao ha pagamentos a credito
if npg > 0 then                                             'ha modos de pagamento ?
   for i = 1 to npg
   mpgTip$ = PosMpgCon$(i, "CHV")                           'consultar tipo 
   if mpgTip$ = "CRE" then                                  'credito ?
       pagCre = 1                                           'validar pagamentos a credito
   end if
   next
end if
end sub


'-----------------------------------------------------------------------------
'Documento
'-----------------------------------------------------------------------------
Sub PosDoc_DocIni 'inicializar documento
call PrpVarPos_Com                                          'preparar variaveis comuns
call PrpVar_Cli                                             'preparar variaveis do cliente

'guardar valores
memTdoc$ = Enc_Mst_Tdoc$                                    'tipo de documento
memNdoc$ = Enc_Mst_Ndoc$                                    'numero documento
memOpc$  = Enc_Mst_Opc$                                     'campo opcional
memMat$  = Enc_Mst_Mat$                                     'matricula

'definicao de posicoes de linhas
Margem       = 00                                           'margem esquerda do documento
PosIdeLin    = 80                                           'posicao das linhas
PosIdeLinP   = 67                                           'posicao das linhas
InicioLinhas = PosIdeLin + 2                                'escrita das linhas documento
InicioLinhasP= PosIdeLinP + 2                               'escrita das linhas documento
FimDoc       = 120                                          'fim do documento

if ValPosBas <> 0 then                                      'existe posicao base ?
   Margem = Margem + ValPosBas                              'somar valor a margem
end if

call LarguraTalao                                           'determinar largura do talao
call DocCerVarPrp                                           'preparar variaveis certificacao

'diversos
call LogoPrp                                                'preparar logotipo
end sub


Sub PosDoc_DocFim 'terminar documento
'msgbox "", "DOC","FIM"
end sub


Sub PosDoc_LinIni 'inicio de linhas
'msgbox "", "LIN","INI"
end sub


Sub PosDoc_LinFim 'fim de linhas
'msgbox "", "LIN","FIM"
end sub


'-------------------------------------------------------------------------
'cabecalho do documento
'-------------------------------------------------------------------------
Sub PosCab 'cabecalho do documento
call PrpVar_Emp                                                'preparar variaveis da empresa
call PrpVar_Doc                                                'preparar variaveis do documento

NVia = TxIde$(Enc_Mst_DocImp$,"IMPCNT")                        'numero via

PrWin PAG_PRP                                                  'preparar pagina
PrWIN AJT_B,Margem, 1                                          'posicao base

if ValPosLrg = Lg50 then
   call Logo1_50                                               'imagem (logotipo)
end if

if ValPosLrg = Lg60 then
   PrWIN IMG_V,1, 7, 4, 50, 15                                 'imagem (logotipo)
end if

if ValPosLrg = Lg80 then
   PrWIN IMG_V,1,11, 4, 50, 15                                 'imagem (logotipo)
end if

if UsaLogoCxe = 1 then
   if ValPosLrg = Lg50 then
      call LogoCe50                                            'caixa envolvente
   end if

   if ValPosLrg = Lg60 then
      PrWIN GR_CX,  7, 4, "+50", "+15", 2                      'caixa envolvente
   end if

   if ValPosLrg = Lg80 then
      PrWIN GR_CX, 11, 4, "+50", "+15", 2                      'caixa envolvente
   end if
end if

LenEmp = len(vuEmpIde$)                                        'largura nome empresa

If ValPosTit > LenEmp then
   TitOk = 0
else
   TitOk = 1
   LenFim = LenEmp-ValPosTit                                   'posicao final
End if

'Dados da empresa
PrWIN AJT_B,  Margem, 21                                       'posicao base
PrWin FON, "BOLD+"                                             'activar bold

if UsaPosTfo = 1 then
   PrWIN FON, ValPosTfo, 1                                     'fonte
else
   PrWIN FON, 12, 1                                            'fonte
end if  

PrWIN TX_CTR, 0, 0, ValPosLrg, 0,left$(vuEmpIde$,ValPosTit)    'identificacao empresa
PrWin FON, "BOLD-"                                             'desactivar bold

PrWin FON, "BOLD+"                                             'activar bold

if UsaPosTfo = 1 then
   PrWIN FON, ValPosTfo, 1                                     'fonte
else
   PrWIN FON, 10, 1                                            'fonte
end if  

If Titok <> 0 then
   PrWIN TX_CTR, 0, 0, ValPosLrg,13,mid$(vuEmpIde$,ValPosTit+1,LenFim)   'identificacao empresa
end if

PrWin FON, "BOLD-"                                             'desactivar bold

PrWIN FON, 08, 1                                               'activar fonte

if TitOk = 0 then
   PrWIN TX_CTR,0, 06, ValPosLrg,10,vuEmpMor$                  'morada
   PrWIN TX_CTR,0, 10, ValPosLrg,14,vuEmpCpo$                  'codigo postal

   Telef$="Telefone : "+vuEmpTel$                              'telefone + numero
   PrWIN TX_CTR,0, 14, ValPosLrg,18,Telef$                     'telefone

   Ctrb$="Contribuinte Nº "+vuEmpNif$                          'NIF - Titulo+contribuinte
   PrWIN TX_CTR,0, 18, ValPosLrg,22,Ctrb$                      'NIF
else
   PrWIN TX_CTR,0, 10, ValPosLrg,14,vuEmpMor$                  'morada
   PrWIN TX_CTR,0, 14, ValPosLrg,18,vuEmpCpo$                  'codigo postal

   Telef$="Telefone : "+vuEmpTel$                              'telefone + numero
   PrWIN TX_CTR,0, 18, ValPosLrg,22,Telef$                     'telefone

   Ctrb$="Contribuinte Nº "+vuEmpNif$                          'NIF - Titulo+contribuinte
   PrWIN TX_CTR,0, 22, ValPosLrg,26,Ctrb$                      'NIF
end if

'call CabLinAdi                                                 'cabecalho - listar linhas adicionais

if UsaCorCab = 1 then                                          'usa cor cabecalho ?
   PrWIN COR_E, 200, 200, 200                                  'cor de enchimento RGB
   PrWIN GR_ME, 0                                              'modo de enchimento
   PrWIN GR_CE,0, 28, ValPosLrg, 40, 2                         'caixa envolvente
else
   PrWIN GR_CX,0, 28, ValPosLrg, 40, 2                         'caixa envolvente
end if

if vuDocTro$ = "S" then
   PrWin FON, "BOLD+"                                          'activar bold
   PrWIN TX_N, 2,29,"Talão de Troca"                           'certificacao
   PrWIN TX_N,29,29,@vaDocNum2                                 'numero documento
   PrWin FON, "BOLD-"                                          'desactivar bold
else
   if ValPosLrg = Lg50 then
      PrWIN FON,  7, 1                                            'fonte  
      PrWin FON, "BOLD+"                                       'activar bold
      PrWIN TX_N, 2,29,@vCerDocIde                             'certificacao
      PrWIN TX_N,28,29,@vaDocNum2                              'numero documento
      PrWin FON, "BOLD-"                                       'desactivar bold
      PrWIN FON,  8, 1                                            'fonte  
   else
      PrWin FON, "BOLD+"                                       'activar bold
      PrWIN TX_N, 2,29,@vCerDocIde                             'certificacao
      PrWIN TX_N,40,29,@vaDocNum2                              'numero documento
      PrWin FON, "BOLD-"                                       'desactivar bold
   end if
end if

if ValPosLrg = Lg50 then
   PrWIN FON,  7, 1                                            'fonte  
   PrWIN TX_N, 2,33,"Data :"                                   'data - titulo 
   PrWIN TX_N,11,33,@vaDtl                                     'data lancamento
   PrWIN TX_N,25,33,"Hora :"                                   'hora

   if Enc_Mst_HrFim = 0 then                                   'hora de fim
      PrWIN TX_N,33,33,@vaHor                                  'hora/ENC
   else
      PrWIN TX_N,33,33,@vaHorF                                 'hora/POS
   end if

   PrWIN TX_N,41,33,@vaVndNom                                  'nome operador
   PrWIN FON,  8, 1                                            'fonte  

   PrWIN TX_N, 2,36,"Documento/Via :"                          'documento - titulo
   PrWIN TX_N,18,36,@DocVia                                    'data lancamento

   if Nvia > 1 then
      PrWIN TX_N,60,36,"2ª Via"                                'titulo - via
   else
      PrWIN TX_N,60,36,"1ª Via"                                'titulo - via
   end if
else
   PrWIN TX_N, 2,33,"Data :"                                   'data - titulo 
   PrWIN TX_N,11,33,@vaDtl                                     'data lancamento
   PrWIN TX_N,27,33,"Hora :"                                   'hora

   if Enc_Mst_HrFim = 0 then                                   'hora de fim
      PrWIN TX_N,35,33,@vaHor                                  'hora/ENC
   else
      PrWIN TX_N,35,33,@vaHorF                                 'hora/POS
   end if

   PrWIN TX_N,44,33,@vaVndNom                                  'nome operador

   PrWIN TX_N, 2,36,"Documento/Via :"                          'documento - titulo
   PrWIN TX_N,25,36,@DocVia                                    'data lancamento

   if Nvia > 1 then
      PrWIN TX_N,60,36,"2ª Via"                                'titulo - via
   else
      PrWIN TX_N,60,36,"1ª Via"                                'titulo - via
   end if
end if

call PosCabCli                                                 'dados do cliente do documento
end sub


Sub CabLinAdi 'cabecalho - listar linhas adicionais
tabVar$ = "EmpTbDocVar"                        'tabela de dados

for i = 1 to 5
ntx$ = NumTxt$(i, 2)                           'conversao em texto
chv$ = "POS.ART.CAB.L" + ntx$                  'chave

res$ = TabAdiCon$("V", tabVar$, chv$)          'consultar valor
if res$ <> "" then                             'ha valor a listar
'   print res$                                  'listar
end if
next
end sub


Sub PosCabCli 'dados do cliente do documento
vUsa = 0                                       'assume nao usar
vTmp$ = left$(ENC_MST_CtEnt$, 3)               'radical da conta
if vTmp$ <> "115" then                         'ha conta do cliente ?
   vUsa = 1                                    'validar listagem
end if

if vUsa = 1 then                               'listar dados do cliente ?
   call PosCabCli_Lst                          'dados do cliente do documento - listar
else
   call PosCabCli_Cfi                          'dados do cliente (consumidor final)
end if
end sub


Sub PosCabCli_Lst 'dados do cliente do documento - listar
PrWIN AJT_B, Margem, 30                        'posicao base

PrWIN GR_CX, 0, 32, ValPosLrg, 53, 2           'caixa envolvente

PrWin FON, "BOLD+"                             'activar bold
PrWIN TX_N, 2, 33,"Código"                     'código
PrWIN TX_N,13, 33,":"                          'código
PrWin FON, "BOLD-"                             'activar bold
PrWIN TX_N,15, 33,@vaCliCt                     'codigo

PrWin FON, "BOLD+"                             'activar bold
PrWIN TX_N, 2, 36,"Contribuinte"               'contribuinte - titulo
PrWIN TX_N,20, 36,":"                          'código
PrWin FON, "BOLD-"                             'activar bold
PrWIN TX_N,22, 36,@vaCliCtb                    'contribuinte - numero

PrWIN TX_N, 2, 39,@vaCliNom                    'nome
PrWIN TX_N, 2, 42,@vaCliMor                    'morada
PrWIN TX_N, 2, 45,@vaCliCpo                    'codigo postal
PrWIN TX_N, 2, 48,@vaCliTxl                    'notas

call PosLinCab                                 'cabecalho para linhas
end sub


Sub PosCabCli_Cfi 'dados do cliente - consumidor final
PrWIN AJT_B, Margem, 30                        'posicao base
PrWIN GR_CX,0, 32, ValPosLrg, 37, 2            'caixa envolvente

PrWIN TX_N, 2, 33,"Dados do Cliente : "        'titulo
'PrWIN TX_N,27, 33,"Consumidor Final"           'nome
PrWIN TX_N,27, 33,"*****************"           'nome

call PosLinCab                                 'cabecalho para linhas
end sub


'-------------------------------------------------------------------------
'linha do documento
'-------------------------------------------------------------------------
Sub PosLinCab 'cabecalho para linhas
if vUsa = 0 then                                             'consumidor final ? 
   PrWIN AJT_B, Margem, 68                                   'posicao base
else
   PrWIN AJT_B, Margem, 81                                   'posicao base
end if

if UsaCorCab = 1 then                                        'usa cor cabecalho ?
   PrWIN COR_E, 200, 200, 200                                'cor de enchimento RGB
   PrWIN GR_ME, 0                                            'modo de enchimento
end if

if ValPosLrg = Lg50 then                                     'largura = 50 colunas
   PrWIN GR_CX , 0,  0, 35  , 3, 2                           'caixa envolvente - descricao
   PrWIN GR_CX ,35,  0, 40  , 3, 2                           'caixa envolvente - iva
   PrWIN GR_CX ,40,  0, Lg50, 3, 2                           'caixa envolvente - total
end if

if ValPosLrg = Lg60 then                                     'largura = 60 colunas
   PrWIN GR_CX , 0,  0, 35  , 3, 2                           'caixa envolvente - descricao
   PrWIN GR_CX ,35,  0, 45  , 3, 2                           'caixa envolvente - preco
   PrWIN GR_CX ,45,  0, 50  , 3, 2                           'caixa envolvente - iva
   PrWIN GR_CX ,50,  0, Lg60, 3, 2                           'caixa envolvente - total
end if

if ValPosLrg = Lg80 then                                     'largura = 80 colunas
   PrWIN GR_CX , 0,  0, 35  , 3, 2                           'caixa envolvente - descricao
   PrWIN GR_CX ,35,  0, 45  , 3, 2                           'caixa envolvente - preco
   PrWIN GR_CX ,45,  0, 51  , 3, 2                           'caixa envolvente - desconto
   PrWIN GR_CX ,51,  0, 56  , 3, 2                           'caixa envolvente - iva
   PrWIN GR_CX ,56,  0, Lg80, 3, 2                           'caixa envolvente - total
end if

PrWIN FON,  6, 1                                             'activar fonte
PrWin FON, "BOLD+"                                           'activar bold
PrWIN TX_CTR, 0,  0, 35, 3,"Descrição"                       'descricao
PrWin FON, "BOLD-"                                           'activar bold

if ValPosLrg = Lg50 then                                     'largura = 60 colunas
   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,35,  0, 40, 3,"IVA"                          'iva
   PrWin FON, "BOLD-"                                        'activar bold

   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,40,  0, Lg50, 3,"Total"                      'total
   PrWin FON, "BOLD-"                                        'activar bold
end if


if ValPosLrg = Lg60 then                                     'largura = 60 colunas
   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,35,  0, 45, 3,"Qt"                           'preco
   PrWin FON, "BOLD-"                                        'activar bold

   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,45,  0, 50, 3,"IVA"                          'iva
   PrWin FON, "BOLD-"                                        'activar bold

   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,50,  0, Lg60, 3,"Total"                      'total
   PrWin FON, "BOLD-"                                        'activar bold
end if

if ValPosLrg = Lg80 then                                     'largura = 80 colunas
   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,35,  0, 45, 3,"Qt"                           'preco
   PrWin FON, "BOLD-"                                        'activar bold

   PrWIN FON,  6, 1                                          'activar fonte
   PrWin FON, "BOLD+"                                        'activar bold
   PrWIN TX_CTR,45,  0, 51, 3,"Desc"                         'desconto
   PrWIN TX_CTR,51,  0, 56, 3,"IVA"                          'iva
   PrWIN TX_CTR,56,  0, Lg80, 3,"Total"                      'total
   PrWin FON, "BOLD-"                                        'activar bold
end if
end sub


Sub PosLinAjt 'ajuste de linhas
'nada a executar                                             'linha de separacao
end sub


Sub DocLinPos 'posicionar linha
if vUsa = 0 then                                             'consumidor final ?
   pyLin = InicioLinhasP + Doc_CntLin * 3                    'posicao Y da linha
   PrWIN AJT_B,   Margem, pyLin                              'posicao base
else
   pyLin = InicioLinhas + Doc_CntLin * 3                     'posicao Y da linha
   PrWIN AJT_B,   Margem, pyLin                              'posicao base
end if
end Sub


Sub DocLinInc 'incrementar/posicionar linha
tmp=CntLin("INC",1)                                          'incrementar contador linhas
Call DocLinPos                                               'posicionar linha
end Sub


Sub PosLinNor 'artigos tipo normal
call DocLinPos                                               'posicionar linha
call PrpVar_Mov                                              'preparar variaveis do movimento

PrWIN FON,  7, 1                                             'activar fonte

if vuDocTro$ = "S" then                                      'documento de troca ?
   call PosLinNorTro
else
   call PosLinNorExe
end if
end sub


Sub PosLinNorExe
PrWIN TX_N , 0, 0,@vaPosNom                                  'nome

if ValPosLrg = Lg50 then                                     'largura = 50 colunas
   PrWIN TX_NP,36, 0,"N",@Iva                                'iva
   PrWIN TX_NP,ValPosLrg-13, 0,"N",@vaPosLiq                 'liquido
end if

if ValPosLrg = Lg60 then                                     'largura = 60 colunas
   PrWIN TX_NP,32, 0,"N",@vaPosQ                             'quantidade
   PrWIN TX_NP,46, 0,"N",@Iva                                'iva
   PrWIN TX_NP,ValPosLrg-13, 0,"N",@vaPosLiq                 'liquido
end if

if ValPosLrg = Lg80 then                                     'largura = 80 colunas
   PrWIN TX_NP,32, 0,"N",@vaPosQ                             'quantidade
   PrWIN TX_NP,47, 0,"N",@vaArtDsc                           'desconto
   PrWIN TX_NP,52, 0,"N",@Iva                                'iva
   PrWIN TX_NP,ValPosLrg-13, 0,"N",@vaPosLiq                 'liquido
end if

if UsaNSupl = 1 then                                         'usa nome suplementar ?
   call DocLinInc
   PrWIN TX_N,  0,  0,@vaArtNom2                             'nome suplementar
end if

if Doc_Art_Qu <> 1 then
   if ValPosLrg = Lg50 then                                  'largura = 50 colunas
      call DocLinInc
      PrWIN TX_N,  08,  0,"Quant x Preço unit.:"             'texto
      PrWIN TX_NP, 30,  0,"N",Doc_Art_Qu                     'preco  
      PrWIN TX_N , 35,  0,"x"                                'sinal
      PrWIN TX_NP, 37,  0,"N",@vaPosPrc                      'preco  
   else
      call DocLinInc
      PrWIN TX_N,  12,  0,"Preço unit.:"                     'texto
      PrWIN TX_NP, 25,  0,"N",@vaPosPrc                      'preco  
   end if
end if

if UsaTqu = 1 then                                           'usa totais quantidades ?
   TotPs = Doc_Art_Qu * Stc_Mst_Peso                         'total peso
   TotKg = TotKg + TotPs                                     'acumular peso
end if
end sub


Sub PosLinNorTro
PrWIN TX_N , 0, 0,@vaPosNom                                  'nome
PrWIN TX_NP,22, 0,"N",@vaPosQ                                'quantidade
end sub


Sub PosLinVcb 'artigos com valor em codigo de barras
call PosLinNor                                               'listar como artigo normal
end sub


Sub PosLinTxl 'artigos tipo texto livre
call DocLinPos                                               'posicionar linha
PrWIN TX_NP, 1, 0,"N",Enc_Mov_Div$                           'listar informacao
end sub


'-------------------------------------------------------------------------
'fim do documento
'-------------------------------------------------------------------------
Sub PosFim 'total do documento
if vuDocTro$ = "S" then                                       'documento de troca ?
   call PosFimTro                                             'terminar documento de troca
else
   call PosFimExe                                             'total do documento - executar
end if
end sub


Sub PosFimExe 'total do documento - executar
call PrpVar_Tot                                               'preparar variaveis de totais do documento

FimDoc = pyLin + 6                                            'posicao final do documento (relativa a ultima linha)
call DocLinInc                                                'incrementar/posicionar linha

npg       = PosMpgPrp(Enc_Mst_Opc$)                           'preparar modos de pagamento
vuPosPag  = PosMpgCon$(0, "PAG")                              'consultar pagamento
vuPosTro  = PosMpgCon$(0, "TRO")                              'consultar troco

call PrpVar_Mpg                                               'preparar variaveis de modos de pagamento

if usaIva$ = "S" then                                         'listar IVA ?
   PrWIN AJT_B, Margem, FimDoc                                'posicao base
   call FimLst_Iva                                            'listar valores de IVA
end if

call FimLst_Mpg                                               'listar modos de pagamento

PrWIN FON,  6, 1                                                                                    'activar fonte

if ValPosLrg = Lg50 then
   PrWIN TX_N, 1, PosFimCxMpg+1,@vCerPgmDesV1                                                          'listar
   PrWIN TX_CTR, 1, PosFimCxMpg+3, ValPosLrg, PosFimCxMpg+3,"Documento emitido por software OLISOFT"   'listar
   PrWIN TX_N, 1, 60,@vCerDocAdi                                                                       'listar
   PrWIN FON,  7, 1                                                                                    'activar fonte
else
   PrWIN TX_N, 1, PosFimCxMpg+1,@vCerPgmDes                                                            'listar
   PrWIN TX_CTR, 1, PosFimCxMpg+3, ValPosLrg, PosFimCxMpg+3,"Documento emitido por software OLISOFT"   'listar
   PrWIN TX_N, 1, 60,@vCerDocAdi                                                                       'listar
   PrWIN FON,  7, 1                                                                                    'activar fonte
end if

if UsaLogo2 = 1 then
   call LogoPrp2                                              'preparar logotipo 2
   FimCxMpg = PosFimCxMpg
   PrtLogoPos = FimDoc + FimCxMpg + 3
   PrWIN AJT_B,Margem,PrtLogoPos                              'posicao base

   if ValPosLrg = Lg50 then
      call Logo2_50                                           'imagem (logotipo)
   end if

   if ValPosLrg = Lg60 then
      PrWIN IMG_V,2, 7, 4, 50, 15                             'imagem (logotipo)
   end if

   if ValPosLrg = Lg80 then
      PrWIN IMG_V,2,11, 4, 50, 15                             'imagem (logotipo)
   end if

if UsaLogoCxe = 1 then
   if ValPosLrg = Lg50 then
      call LogoCe50                                           'caixa envolvente
   end if

   if ValPosLrg = Lg60 then
      PrWIN GR_CX,  7, 4, "+50", "+15", 2                      'caixa envolvente
   end if

   if ValPosLrg = Lg80 then
      PrWIN GR_CX, 11, 4, "+50", "+15", 2                      'caixa envolvente
   end if
end if
end if

if UsaLogo2 = 0 then
   pyZon = FimDoc + PosFimCxMpg+5                             'posicao base
else
   pyZon = FimDoc + PosFimCxMpg+21                            'posicao base
end if

call FimLinAdi                                                'listar linhas adicionais

'print PrtCmd$("[CorAva]")                                    'avanco e corte de papel
''print PrtCmd$("[CorPar]")                                   'corte parcial de papel
end sub


Sub PosFimTro 'fim - documento de troca
call DocLinInc                                                'incrementar/posicionar linha
'FimDoc = pyLin + 6                                            'posicao final do documento (relativa a ultima linha)

PrWIN FON,  7, 1                                              'activar fonte
PrWin FON, "BOLD+"                                            'activar bold

pyZon = pyLin                                                 'posicao base
call FimLinAdi                                                'listar linhas adicionais
end sub


Sub FimLinAdi 'fim - listar linhas adicionais
PrWIN AJT_B,   Margem, pyZon                                 'posicao base

tabVar$ = "EmpTbDocVar"                                      'tabela de dados
for i = 1 to 5
   ntx$ = NumTxt$(i, 2)                                      'conversao em texto
   chv$ = "POS.ART.FIM.L" + ntx$                             'chave

   res$ = TabAdiCon$("V", tabVar$, chv$)                     'consultar valor
   if res$ <> "" then                                        'ha valor a listar
      PrWin FON, "BOLD+"                                     'activar bold
      'PrWIN TX_CTR, 1, 62+i*3, ValPosLrg, 62+i*3,res$       'listar
      PrWIN TX_CTR, 1, i*3, ValPosLrg, i*3,res$              'listar
      PrWin FON, "BOLD-"                                     'desactivar bold
   end if
next
end sub


Sub FimLst_Iva 'fim - listar valores de IVA
PrWIN FON,  7, 1                                             'activar fonte
PrWin FON, "BOLD+"                                           'activar bold

if UsaCorCab = 1 then                                        'usa cor cabecalho ?
   PrWIN COR_E, 200, 200, 200                                'cor de enchimento RGB
   PrWIN GR_ME, 0                                            'modo de enchimento
   PrWIN GR_CE,0,  0, ValPosLrg, 4, 2                        'caixa envolvente
else
   PrWIN GR_CX,0,  0, ValPosLrg, 4, 2                        'caixa envolvente
end if

PrWIN TX_CTR, 2 , 1, ValPosLrg, 3,"Resumo do IVA (Incluído)" 'titulo

if ValPosLrg = Lg50 then
   PrWIN FON,  7, 1                                          'activar fonte
   PrWIN TX_N, 2 , 05,"Taxa"                                 'titulo
   PrWIN TX_N,19 , 05,"Incidência"                           'titulo
   PrWIN TX_N,44 , 05,"Valor"                                'titulo
end if

if ValPosLrg = Lg60 then
   PrWIN FON,  7, 1                                          'activar fonte
   PrWIN TX_N, 2 , 05,"Taxa"                                 'titulo
   PrWIN TX_N,25 , 05,"Incidência"                           'titulo
   PrWIN TX_N,54 , 05,"Valor"                                'titulo
end if

if ValPosLrg = Lg80 then
   PrWIN FON,  7, 1                                          'activar fonte
   PrWIN TX_N, 2 , 05,"Taxa"                                 'titulo
   PrWIN TX_N,31 , 05,"Incidência"                           'titulo
   PrWIN TX_N,60 , 05,"Valor"                                'titulo
end if

PrWin FON, "BOLD-"                                           'desactivar bold

cnt =0

for i = 0 to 9
vuIvaTax = IvaTax(i)                                         'taxa
vuIvaInc = AdoIvaInc("T", i)                                 'valor de incidencia
vuIvaVal = AdoIvaVal("T", i)                                 'valor de IVA

if vuIvaInc <> 0 then                                        'ha valor ?
   PrWIN TX_N, 2 ,  8+cnt,@vaIvaT                            'taxa
   PrWIN TX_N,ValPosLrg-38,8+cnt,@vaIvaI                     'incidencia
   PrWIN TX_N,ValPosLrg-15,8+cnt,@vaIvaV                     'valor
   cnt = cnt + 3                                             'contador
end if
next

posE = 8+cnt+1
PrWIN GR_LI,  0, posE,  ValPosLrg, posE, 2                   'separador horizontal

if UsaTqu = 1 then                                           'usa totais quantidades ?
   PrWIN FON,  7, 1                                          'activar fonte
   PrWIN TX_N,  2, posE+0.5,"Total Quantidades"              'titulo
   PrWIN TX_N, 24, posE+0.5,":"                              'titulo
   PrWIN TX_NP,ValPosLrg-14, posE+0.5,"N",@TotQu             'total quantidades
end if

PrWIN FON,  7, 1                                             'activar fonte
PrWIN TX_N,  2, posE+3.5,"Total Ilíquido"                    'titulo
PrWIN TX_N, 24, posE+3.5,":"                                 'titulo
PrWIN TX_NP,ValPosLrg-21, posE+3.5,"N",@vaDocIlq             'total iliquido
PrWIN TX_N,  2, posE+6.5,"Total Desconto"                    'titulo
PrWIN TX_N, 24, posE+6.5,":"                                 'titulo
PrWIN TX_NP,ValPosLrg-21, posE+6.5,"N",@vaDocDsc             'total desconto
PrWIN TX_N,  2, posE+9.5,"Total IVA"                         'titulo
PrWIN TX_N, 24, posE+9.5,":"                                 'titulo
PrWIN TX_NP,ValPosLrg-21, posE+9.5,"N",@vaDocIva             'total iva

PrWin FON, "BOLD+"                                           'activar bold
PrWIN TX_N,  2, posE+12.5,"Valor a Pagar"                    'titulo
PrWIN TX_N, 24, posE+12.5,":"                                'titulo
PrWIN TX_NP,ValPosLrg-21, posE+12.5,"N",@vaDocTot            'total a pagar
PrWin FON, "BOLD-"                                           'activar bold

PrWIN GR_LI,  0, posE+16,  ValPosLrg, posE+16, 2             'separador horizontal
PrWIN GR_CX,  0,  0, ValPosLrg,PosE+21, 2                    'caixa envolvente

if pagCre = 1 then                                           'credito ?
   PrWIN TX_N,25, posE+17,"Pagamento a crédito"              'titulo
else
   if ValPosLrg = Lg50 then
      PrWIN FON,  7, 1                                       'activar fonte
      PrWIN TX_N, 1, posE+17,"Valor Entregue"                'titulo
      PrWIN TX_N,18, posE+17,":"                             'titulo
      PrWIN TX_N,20, posE+17,@vaPosPag                       'valor pago
      PrWIN TX_N,34, posE+17,"Troco:"                        'titulo
      PrWIN TX_N,40, posE+17,@vaPosTro                       'troco
      PrWin FON, "BOLD-"                                     'desactivar bold
      PrWIN FON,  8, 1                                       'activar fonte
   else
      PrWin FON, "BOLD+"                                     'activar bold
      PrWIN TX_N, 5, posE+17,"Valor Entregue"                'titulo
      PrWIN TX_N,26, posE+17,":"                             'titulo
      PrWIN TX_N,28, posE+17,@vaPosPag                       'valor pago
      PrWIN TX_N,43, posE+17,"Troco:"                        'titulo
      PrWIN TX_N,50, posE+17,@vaPosTro                       'troco
      PrWin FON, "BOLD-"                                     'desactivar bold
   end if
end if
end sub


Sub FimLst_Mpg 'fim - listar modos de pagamento
npg       = PosMpgPrp(Enc_Mst_Opc$)                          'preparar modos de pagamento

if npg > 0 then                                                                                   'ha modos de pagamento ?
   if ValPosLrg = Lg50 then
      PrWIN FON,  6, 1                                                                               'activar fonte
      PrWIN TX_CTR,2, posE+22, ValPosLrg, posE+22,"Os bens foram colocados à disposição do cliente"  'titulo
      PrWIN TX_CTR,2, posE+25, ValPosLrg, posE+25,"nesta data (Artº 36,nº5,alínea f) do CIVA)"       'titulo
      PrWIN FON,  7, 1                                                                               'activar fonte
   else
      PrWIN FON,  7, 1                                                                               'activar fonte
      PrWIN TX_CTR,2, posE+22, ValPosLrg, posE+22,"Os bens foram colocados à disposição do cliente"  'titulo
      PrWIN TX_CTR,2, posE+25, ValPosLrg, posE+25,"nesta data (Artº 36,nº5,alínea f) do CIVA)"       'titulo
      PrWIN FON,  7, 1                                                                               'activar fonte
   end if

   if UsaCorCab = 1 then                                         'usa cor cabecalho ?
      PrWIN COR_E,200, 200, 200                                  'cor de enchimento RGB
      PrWIN GR_ME,0                                              'modo de enchimento
      PrWIN GR_CE,0, posE+29, ValPosLrg, posE+32, 2              'caixa envolvente
   else
      PrWIN GR_CX,0, posE+29, ValPosLrg, posE+32, 2              'caixa envolvente
   end if

   PrWin FON, "BOLD+"                                                   'activar bold
   PrWIN TX_CTR, 2 ,posE+29, ValPosLrg, posE+32,"Modos de Pagamento"    'titulo
   PrWin FON, "BOLD-"                                                   'desactivar bold

   cntM = 0

   for i = 1 to npg
      mpgTip$ = PosMpgCon$(i, "CHV")                             'consultar tipo 
      mpgIde$ = PosMpgCon$(i, "IDE")                             'consultar identificacao
      mpgLiq  = PosMpgCon$(i, "LIQ")                             'consultar valor de pagamento
      mpgVlp$ = FrmNum$(05.2, mpgLiq)                            'formatar valor

      PrWIN TX_N,  2, PosE+35+cntM,mpgTip$                       'listar tipo
      PrWIN TX_N, 20, PosE+35+cntM,mpgIde$                       'listar identificacao
      PrWIN TX_N, ValPosLrg-11, PosE+35+cntM,mpgVlp$             'listar identificacao
      cntM = cntM + 3
   next
end if

PosFimCxMpg = posE+35+cntM+1
PrWIN GR_CX,0, posE+33, ValPosLrg, PosFimCxMpg, 2                'caixa envolvente
end sub


Sub FimLst_Opc 'fim - listar valores de campos opcionais
end sub


Sub LarguraTalao 'largura do talao

if left$(ValPosLrg,1) = 5 then                                    '50 colunas
   Lg50 = ValPosLrg
end if

if left$(ValPosLrg,1) = 6 then                                    '60 colunas
   Lg60 = ValPosLrg
end if

if left$(ValPosLrg,1) = 7 then                                    '80 colunas
   Lg80 = ValPosLrg
end if
end sub


'---------------------------------------------------------------------------------------
' Largura 50 colunas
'---------------------------------------------------------------------------------------
'logotipo
Sub Logo1_50 'logotipo
PrWIN IMG_V,1, 4, 4, 45, 15                                 'imagem (logotipo)
end sub

Sub Logo2_50 'logotipo 2
PrWIN IMG_V,2, 4, 4, 45, 15                                 'imagem (logotipo)
end sub

Sub LogoCe50 'caixa envolvente logotipo 50 colunas
if UsaLogoCxe = 1 then
   if ValPosLrg = Lg50 then
      PrWIN GR_CX,  4, 4, "+45", "+15", 2                   'caixa envolvente
   end if
end if
end sub
##


'==============================================================================
#INC - Inclusao de funcionalidades
'==============================================================================
Funcoes para certificacao         =[ENC_DOC],EncDocCer_Pgm.inc
Funcoes para IVA                  =[ENC_DOC],EncDocCom_Pgm.inc
Funcoes para configurar documento =[ENC_DOC],EncDocCfg_Pgm.inc
##

