'Nome       : StdFacWord.imp
'Tipo       : LST
'Data       : 2003/11/19
'Versao     : 1.0
'Descricao  : Formato de documento tipo Factura para WORD

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2003/??/?? --------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'- Modo WORD ------------------------------------------------------------------
Guardar documento                [WordGrv]=S
Nome do documento a guardar      [WordNom]=[DOC]
'Nome do documento a guardar      [WordNom]=RND:EncFac

Mostrar documento           (S/N)  [WordVer]=N
Listar documento            (S/N)  [WordLst]=S

'Usar mail - Nao usa           (N)  [MailUsa]=N
'Usar mail - Automatico        (A)  [MailUsa]=A
Usar mail - Manual            (M)  [MailUsa]=M

Usar opcoes de mail          (S/N) [MailOpc]=S
Juntar documento word a mail (S/N) [MailDoc]=S

Tipo de assunto (? ou PAG)         [MailAss]=PAG
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Nome                       [DocNom]=Factura
Vias                       [DocVia]=Original
'Vias                       [DocVia]=Original;Duplicado
Tipo                       [DocTip]=
Personalizacao             [DocPer]=

'dados especificos
Nome da imagem do logotipo [DocEsp]=ImgLogo=LogoDoc.bmp

'formato
Impressora                 [DocPrt]=
Linhas por pagina          [DocLpg]=0         'zero usa valor automatico
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Base para documento         [FxDOC]=WordDoc
Listar cabecalho            [FxCAB]=Cab
Listar linhas               [FxLIN]=Lin, 0; Ajt, 0; Txl, 0; Nor, 0
Listar fim                  [FxFIM]=Fim

Matriz auxiliar            [DocMat]=StdFacWord.doc
##


'==============================================================================
#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)

'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)

'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     = FrmNum$(10.3,Doc_Art_Qu)
Uni       = Stc_Mst_Unid$
LinDesco  = Enc_Mov_Desco$
Iva       = IvaTax("A")
Portes    = Portes$

LinTxl    = Enc_Mov_Div$

'LinPrc    = FrmNum$(8.2,Doc_Art_Prc)
LinPrc    = StcPrcFrm$(10,Doc_Art_Prc)

'LinLiq    = StcPrcFrm$(12,Doc_Art_Liq)
LinLiq    = FrmNum$(10.2,Doc_Art_Liq)

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


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

'variaveis a substituir pelo WORD
wDocNome  = Doc_Ide_Nome$
wDocNum   = FrmNdo$("",Enc_Mst_Tdoc$,Enc_Mst_Ndoc$)
wDocVia   = Doc_Ide_Via$
wTotDoc   = FrmNum$(13.2,Ado_Tot_Tot)
##


'==============================================================================
#SEQ - Sequencias para recolha de artigos
'==============================================================================

'------------------------------------------------------------------------------
' 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


'------------------------------------------------------------------------------
' 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

##


'==============================================================================
#INC - Inclusao de ficheiros
'==============================================================================
'Sequencias comuns              =[ENC_DOC],DocSeq_Com.inc
##


'==============================================================================
' 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


'==============================================================================
#INC - Inclusao de ficheiros
'==============================================================================
'Paginas comuns                 =[ENC_DOC],DocPag_Com.inc
##



'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------------->'Comentario (58)
'---------------------------------------------------->'Comentario (55)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

Sub FxIni 'funcao de inicializacao
call Word_FxIni                        'inicializar funcoes para listar em WORD
End sub


Sub Word_OpcDocIni 'preparar opcoes do documento
'msgbox "","OpcDoc - INI",""

'tipos de linhas
linTipNum = 3                                      'numero de tipos de linha
linTipZer = 1                                      'tipo da linha de ajuste (em branco)
linTipTxl = 2                                      'tipo da linha de texto livre
linTipNor = 3                                      'tipo da linha normal
end sub


'-----------------------------------------------------------------------------
' Funcoes para impressao do documento
'-----------------------------------------------------------------------------
Sub WordDoc_DocIni
res = MsgSba(0,"Listar documento ...")

'msgbox "","Doc - INI",""

ideTdo$  = Enc_Mst_Tdoc$                           'tipo de documento
ideNdo$  = Enc_Mst_Ndoc$                           'numero de documento

call Word_DocIni                                   'inicio de documento
end sub


Sub WordDoc_ViaIni
'msgbox "","Doc Via - INI",Doc_Ide_Via$

call Word_ViaIni                                   'inicio de viaend sub
end sub


Sub WordDoc_ViaFim
'msgbox "","Doc Via - FIM",Doc_Ide_Via$
end sub


Sub WordDoc_DocFim
'msgbox "","Doc - FIM",""

call Word_DocLst                                   'listar documento em WORD
end sub


'-----------------------------------------------------------------------------
' Linhas do Documento
'-----------------------------------------------------------------------------
Sub LinTxl 'artigos tipo texto livre
if cntVia = 1 then                     'guardar linha
   call IncLinCnt                      'incrementar contador de linhas
   res = VBS_MemLin(linTipTxl)         'memorizar linha
end if
end sub


Sub LinNor 'artigos tipo normal
if cntVia = 1 then                     'guardar linha
   call IncLinCnt                      'incrementar contador de linhas
   res = VBS_MemLin(linTipNor)         'memorizar linha
end if
end sub

##


'==============================================================================
#INC - Inclusao de ficheiros
'==============================================================================
'Funcoes comuns para documentos WORD  =[ENC_DOC],EncDocWord.inc
Funcoes comuns para documentos WORD  =[SIG_DIR.FCO]\FicSig\Inc\DocWord.inc
##




