'Nome       : CprProDiaArt.std
'Tipo       : LST
'Data       : 2008/10/19
'Versao     : 1.0
'Descricao  : Producao diaria - Artigos

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


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Especifico 1                      [EspOp1]=Opcao 1
##


'==============================================================================
#DOC - Configuracao do documento - WORD
'==============================================================================
Tipo                       [DocTip]=CprProDiaArt
Nome                       [DocNom]=CprProDiaArt,Artigos

'formato
Saida/Impressora           [DocPrt]=NULA

Linhas por pagina          [DocLpg]=1
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


'funcoes de listagem
Base para documento         [FxDOC]=WordProDiaArt
Listar cabecalho            [FxCAB]=WordProDiaArt_Cab
Listar linhas               [FxLIN]=WordProDiaArt_Lin
Listar fim                  [FxFIM]=WordProDiaArt_Fim

Matriz auxiliar            [DocMat]=CprProDiaArt.doc
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
'------------------------------------------------------------------------------
'Lista de variaveis especificas
'------------------------------------------------------------------------------
'valores texto
'MemTxt$(01)   - Titulo da listagem
'MemTxt$(11)   - ?


'------------------------------------------------------------------------------
'Formatacao de valores
'------------------------------------------------------------------------------
Pag       = Doc_CntPag
Cnt       = FrmVal$(CntAux(1),21,4)
Tit080    = TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",Memtxt$(1))
Tit132    = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))

DataExt   = FrmDt$("EXT",Sig_DtHoje)

##


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

'- 13 -     - info
'- 25 ----------------->'
'- 28 -------------------->'
'- 40 -------------------------------->'
'- 43 ----------------------------------->'
'- 46 -------------------------------------->'
'- 49 ----------------------------------------->'
'- 52 -------------------------------------------->'
'- 55 ----------------------------------------------->'
'- 58 -------------------------------------------------->'
'- 61 ----------------------------------------------------->'
'- 64 -------------------------------------------------------->'
'- 67 ----------------------------------------------------------->'
'- 70 -------------------------------------------------------------->'


'------------------------------------------------------------------------------
'DIV - Funcoes diversas
'------------------------------------------------------------------------------
Sub Lst_AJT 'ajuste
'nada a executar
end sub


'------------------------------------------------------------------------------
'INI - Inicializacao do documento
'------------------------------------------------------------------------------
Sub FxIni 'funcao de inicializacao
logoNom$ = "DocLogo.bmp"                  'nome do logotipo
logoUsa$ = "[SIG_DIR.DIV]," + logoNom$    'logotipo a usar
logoFic$ = VarTx$(logoUsa$,"R")           'ficheiro do logotipo
end sub


Sub FxFim 'funcao de finalizacao
'nada a executar
end sub


'=============================================================================
'InsTec - Instrucao tecnica
'=============================================================================

'=============================================================================
'- [WORD] - Listagem para WORD -----------------------------------------------
'=============================================================================
Sub WordProDiaArt_DocIni 'inicializar documento
WordOpcNfi$ = "RND:CprProDiaArt.doc"            'nome do ficheiro a gerar

call WordComDoc_IniMat                          'inicializar documento por matriz

'preparacao especifica
'nao ha
end sub


Sub WordProDiaArt_DocFim 'terminar documento
call WordComDoc_Fim                             'terminar/mostrar documento
end sub


Sub WordProDiaArt_Lin 'linha de valores
call Lst_Escala                                 'listar escala
call Lst_Formula                                'listar formula
call Lst_Componentes                            'listar componentes

'terminar
res = WordSbtLinBrk("")                         'substituir line break
res = WordSbtVar(1)                             'executar substituicao

zon$ = WordZonDoc("")                           'preparar zonas do documento
varAdi = WordZonSbtPrp("PH")                    'variaveis adicionais do cabecalho

for i = 1 to varAdi
var$ = WordZonSbtCon$(i, "IDE")                 'variavel a substituir
vls$ = CalcTx$(var$)                            'calcular expressao
res = WordZonSbtRvm(i, vls$)                    'guardar valor para substituicao
next

resSbt$ = WordZonSbtExe("PH")                   'executar substituicao
end sub


Sub WordProDiaArt_Fim 'terminar
'nada a executar
end sub


Sub Lst_Escala 'listar escala
sep$ = "|"                                      'separador
sli$ = chr$(11)                                 'separador de linha
vtx$ = ""                                       'inicializar valor

'escala
dInc = 8                                        'digitos a incrementar
dMax = 80                                       'maximo digitos da linha

vIni = 100                                      'valor inicial
vFim = 2000                                     'valor final
vInc = 100                                      'valor de incremento

tmp$ = CPR_UNP_DivObs$                          'copiar
'xIni$= TxIde$(tmp$,"ESC.GRP")                   'escala - grupo
'xMax$= TxIde$(tmp$,"ESC.MAX")                   'escala - maximo

'vIni = val(xIni$)                               'valor inicial
'vFim = val(xMax$)                               'valor final
'vInc = vIni                                     'valor de incremento

'nCic = CPR_LST_ProNci                           'numero de ciclos
vIni = CPR_LST_Esc.Ini                          'valor inicial
vFim = CPR_LST_Esc.Fim                          'valor final
vInc = CPR_LST_Esc.Grp                          'valor de incremento


if vInc > 0 then                                'gerar escala ?
   dLin = 0                                     'digitos da linha
   for i = vIni to vFim step vInc
   ntx$ = FrmNum$(dInc, i)                      'formatar

   dLin = dLin + dInc                           'juntar digitos
   if dLin > dMax then                          'acima do maximo ?
      vtx$ = vtx$ + sli$                        'juntar separdor

      dLin = dInc                               'digitos
   end if

   vtx$ = vtx$ + ntx$                           'juntar texto
next
else
   vtx$ = ""                                    'valor
end if

sbt$ = vtx$                                     'valor de substituicao


'registar texto
li =  1                                         'linha
co =  1                                         'coluna

res = WordTabSel(5)                             'seleccionar tabela
res = WordTabLpzCel(li, co)                     'limpar celula
res = WordTabCelTxt(li, co, sbt$)               'substituir texto 
end sub


Sub Lst_Formula 'listar formula
sep$ = "|"                                      'separador
sli$ = chr$(11)                                 'separador de linha
vtx$ = ""                                       'inicializar valor

'registar texto
numCmp = CprMapCon("CMP","NUM")                 'numero de componentes
for idxCmp = 1 to numCmp
usa    = CprMapPrp("CMP", idxCmp)               'preparar dados - componente
grpNcp = CprMapCon("GRP","NUM")                 'numero de componentes do grupo

vCod$ = CprMapCon$("CMP","Cod$")                'codigo
vQua1 = CprMapCon("CMP","Qua")                  'quantidade (1)
vPer  = CprMapCon("CMP","Per")                  'percentagem

vTpm$ = CprMapCon$("CMP","Tpm$")                'tipo de material

aCod$ = TxtTamMin$(vCod$, 20)                   'ajustar tamanho
xPer$ = FrmNum$(3.2, vPer)                      'formatar %


if grpNcp > 1 then                              'grupo de naterial ?
   uCod$ = mid$(vCod$,5)                        'codigo a usar
else
   uCod$ = vCod$                                'codigo a usar
end if

vIde$ = CprCmpIde$("C+D",vCod$)                 'identificacao

aIde$ = TxtTamMin$(vIde$, 42)                   'ajustar tamanho
vLin$ = aIde$ + " " + xPer$ + "%"               'linha de texto

if vTpm$ = "MAT.2" then                         'tipo valido ?
   vQua2 = CprMapCon("CMP","Qua")               'quantidade

   fma = CprMapFma("MAT.1", vQua2)              'factor de material
   vma = fma * 1000                             'valor para material

   xVma$ = FrmNum$(5.2, vma)                    'formatar
   aVma$ = trim$(xVma$)                         'ajustar
      
   vLin$ = vLin$ + " [" + aVma$ + " gr/Kg]"     'completar linha
end if

vtx$ = TxtSepJun$(vtx$, sep$, vLin$)            'juntar linha
next

sbt$ = TxtSbt$(vtx$, "|", sli$)                 'substituicao de separador

'registar texto
li =  1                                         'linha
co =  1                                         'coluna

res = WordTabSel(10)                            'seleccionar tabela
res = WordTabLpzCel(li, co)                     'limpar celula
res = WordTabCelTxt(li, co, sbt$)               'substituir texto 
end sub


Sub Lst_Componentes 'listar componentes
sep$ = "|"                                      'separador
sli$ = chr$(11)                                 'separador de linha
vtx$ = ""                                       'inicializar valor

'registar texto
numCmp = CprProConCmpNum("")                    'numero de componentes
for idxCmp = 1 to numCmp
usa    = CprProConCmpPrp(idxCmp)                'preparar dados - componente

vCod$ = CprProConCmp$("COD")                    'codigo
vDes$ = CprProConCmp$("DES")                    'descricao
vTpm$ = CprProConCmp$("TPM")                    'tipo de material
vGpm$ = CprProConCmp$("GRP.MAT")                'grupo de material

vLin$ = vDes$                                   'linha

if vGpm$="MAT" then                             'materiais ?
   vtx$ = TxtSepJun$(vtx$, sep$, vLin$)         'juntar linha
end if
next

sbt$ = TxtSbt$(vtx$, "|", sli$)                 'substituicao de separador

'registar texto
li =  1                                         'linha
co =  1                                         'coluna

res = WordTabSel(11)                            'seleccionar tabela
res = WordTabLpzCel(li, co)                     'limpar celula
res = WordTabCelTxt(li, co, sbt$)               'substituir texto 
end sub
'---------------------------------------------->'Comentario (49)

##











Sub WordInsTec_Lin 'linha de valores
sep$ = "|"                                      'separador
sli$ = chr$(11)                                 'separador de linha
vtx$ = ""                                       'inicializar valor
grpCod$ = ""                                    'codigo dos grupos


lGrp = 0                                        'nao lista grupos

numCmp = CprMapCon("CMP","NUM")                 'numero de componentes
for idxCmp = 1 to numCmp
usa    = CprMapPrp("CMP", idxCmp)               'preparar dados - componente
grpNcp = CprMapCon("GRP","NUM")                 'numero de componentes do grupo

vCod$ = CprMapCon$("CMP","Cod$")                'codigo
vQua1 = CprMapCon("CMP","Qua")                  'quantidade (1)
vPer  = CprMapCon("CMP","Per")                  'percentagem

vTpm$ = CprMapCon$("CMP","Tpm$")                'tipo de material

aCod$ = TxtTamMin$(vCod$, 20)                   'ajustar tamanho
xPer$ = FrmNum$(3.2, vPer)                      'formatar %


if grpNcp > 1 then                              'grupo de naterial ?
   uCod$ = mid$(vCod$,5)                        'codigo a usar
else
   uCod$ = vCod$                                'codigo a usar
end if

vIde$ = CprCmpIde$("C+D",vCod$)                 'identificacao

aIde$ = TxtTamMin$(vIde$, 42)                   'ajustar tamanho
vLin$ = aIde$ + " " + xPer$ + "%"               'linha de texto

if vTpm$ = "MAT.2" then                         'tipo valido ?
   vQua2 = CprMapCon("CMP","Qua")               'quantidade

   fma = CprMapFma("MAT.1", vQua2)              'factor de material
   vma = fma * 1000                             'valor para material

   xVma$ = FrmNum$(5.2, vma)                    'formatar
   aVma$ = trim$(xVma$)                         'ajustar
      
   vLin$ = vLin$ + " [" + aVma$ + " gr/Kg]"     'completar linha
end if

vtx$ = TxtSepJun$(vtx$, sep$, vLin$)            'juntar linha

if grpNcp > 1 then                              'listar grupo ?
   lGrp = 1                                     'lista grupos

   for idxGrp = 1 to grpNcp
   usa   = CprMapPrp("GRP", idxGrp)             'preparar dados - grupo
   gCod$ = CprMapCon$("GRP","Cod$")             'codigo
   gPer  = CprMapCon("GRP","Per")               'percentagem
   xPer$ = FrmNum$(3.2, gPer)                   'formatar %

   res = StcArtLer(gCod$)                       'ler artigo
   if res = 1 then                              'encontrou ?
      vIde$ = STC_MST_NOME1$                    'identificacao
   else
      vIde$ = gCod$                             'identificacao
   end if
   aIde$ = TxtTamMin$(vIde$, 42)                'ajustar tamanho
   tmp$ = "   " + aIde$                         'identar


   vli$ = tmp$                                  'linha de texto

   vtx$ = TxtSepJun$(vtx$, sep$, vli$)          'juntar linha

   vGrp$ = "[" +vCod$ + "=" + gCod$ + "]"       'valor para grupo
   grpCod$ = grpCod$ + vGrp$                    'juntar grupo
   next

   vtx$ = vtx$ + sep$                           'separacao
end if
next

txZon1$ = "|Composições:||" + vtx$              'texto para zona 1
vtx$    = ""                                    'inicializar texto

if lGrp = 1 then                                'listar grupos ?
   vtx$ = vtx$ + "||Descrição pormenorizada:|"  'separacao

   numGrp = CprMapGrpSep(grpCod$, "|")          'separar grupos

   for idxGrp = 1 to numGrp
   usa   = CprMapPrp("GRP", idxGrp)             'preparar dados - grupo
   gCod$ = CprMapCon$("GRP","Cod$")             'codigo

   'ide$ = "Grupo: " + gCod$                     'identificacao
   vIde$ = CprCmpIde$("C+D",gCod$)              'identificacao
   ide$ = "Grupo: " + vIde$                     'identificacao do grupo


   vtx$ = TxtSepJun$(vtx$, sep$, ide$)          'juntar linha

   grcNum = CprMapCon("GRPCMP","NUM")           'numero de componentes
   for grcIdx = 1 to grcNum
   usa   = CprMapPrp("GRPCMP", grcIdx)          'preparar dados - grupo/componentes
   vCod$ = CprMapCon$("GRPCMP","Cod$")          'codigo
   vPer  = CprMapCon("GRPCMP","VgPgr")          'percentagem
   xPer$ = FrmNum$(3.2, vPer)                   'formatar %

   res = StcArtLer(vCod$)                       'ler artigo
   if res = 1 then                              'encontrou ?
      vIde$ = STC_MST_NOME1$                    'identificacao
   else
      vIde$ = vCod$                             'identificacao
   end if
   tmp$ = TxtTamMin$(vIde$, 42)                 'ajustar tamanho

   vli$  = tmp$ + " " + xPer$ + "%"             'linha de texto

   vTpm$ = CprMapCon$("GRPCMP","Tpm$")          'tipo de material
   if vTpm$ = "MAT.2" then                      'tipo valido ?
      vQua = CprMapCon$("GRPCMP","VgQua")       'quantidade

      fma = CprMapGrpFma("MAT.1", vQua)         'factor de material
      vma = fma * 1000                          'valor para material

      xVma$ = FrmNum$(5.2, vma)                 'formatar
      aVma$ = trim$(xVma$)                      'ajustar
      
      vli$ = vli$ + " [" + aVma$ + " gr/Kg]"    'completar linha

   end if

   vtx$ = TxtSepJun$(vtx$, sep$, vli$)          'juntar linha
   next
 
   'if idxGrp < numGrp then                     'juntar separacao
       vtx$ = vtx$ + "|"                        'separacao
   'end if
   next
end if
txZon2$ = vtx$                                  'texto para zona 2

'registar texto
li = 22                                         'linha
res = WordTabSel(2)                             'seleccionar tabela


'zona 1
co =  1                                         'coluna
'sbt$ = TxtSbt$(txZon1$, "|", sli$)             'substituicao de separador

tmp$ = txZon1$ + "|" + txZon2$                  'texto a usar
sbt$ = TxtSbt$(tmp$, "|", sli$)                 'substituicao de separador
res = WordTabLpzCel(li, co)                     'limpar celula
res = WordTabCelTxt(li, co, sbt$)               'substituir texto 

'zona 2
co =  2                                         'coluna

'terminar
res = WordSbtLinBrk("")                         'line break


'==============================================================================
#INC - Funcoes comuns
'==============================================================================
Funcoes comuns                         =[SIG_Dir.Div],LsComPgm.std
'Funcoes comuns XLS                     =[SIG_LST_DIR.XLS],XlsCom_Pgm.inc
Funcoes comuns WORD                    =[SIG_LST_DIR.$INC],WordCom_Pgm.inc
##
