'Nome       : CprPro.std
'Tipo       : LST
'Data       : 2008/03/02
'Versao     : 1.0
'Descricao  : Producao

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



'==============================================================================
#SQL - Comandos SQL
'==============================================================================
'Base de dados           [BD]=EmpFic$("EMP","Cemp,Emp_Dat.mdb")
Base de dados           [BD]=EmpFic$("EMP","Cpr,Cpr.mdb")


'------------------------------------------------------------------------------
'- Generico -------------------------------------------------------------------
'------------------------------------------------------------------------------
Nome do artigo [Cmd]=ArtNom=+
+SELECT Nome1$ as [NOME$] +
+FROM StcMst +
+WHERE Art$ = '{ART.COD}'


'------------------------------------------------------------------------------
'- Especifico -----------------------------------------------------------------
'------------------------------------------------------------------------------
Ordens de producao     [Cmd]=OprDoc=+
+SELECT * FROM EncMst +
+WHERE [Tdoc$] IN('{Opc_Tdoc}') +
+AND [Ndoc$] BETWEEN '{Opc_Ndoc.Ini}' AND '{Opc_Ndoc.Fim}' +
+AND [CtEnt$] BETWEEN '{Opc_Ctu.Ini}' AND '{Opc_Ctu.Fim}' +
+AND dtl BETWEEN {Opc_Dtu.Ini} AND {Opc_Dtu.Fim} +
+ORDER BY Tdoc$, Ndoc$


Artigos da ordem de producao  [Cmd]=OprArt=+
+SELECT * FROM EncMov +
+WHERE [Tdoc$] = '{DOC.TDO}' AND [Ndoc$] = '{DOC.NDO}' +
+AND [TipRl$] = 'ART' +
+ORDER BY NumLin


Registos de producao - geral [Cmd]=ProRegGer=+
+SELECT * FROM CprPro +
+ORDER BY RecIde


Registos de producao  [Cmd]=ProReg=+
+SELECT * FROM CprPro +
+WHERE [Tdoc$] IN('{Opc_Tdoc}') +
+AND [Ndoc$] BETWEEN '{Opc_Ndoc.Ini}' AND '{Opc_Ndoc.Fim}' +
+AND [DtPro$] BETWEEN '{Opc_Dtu.Ini}' AND '{Opc_Dtu.Fim}' +
+AND [Art$] BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}' +
+AND [Ct$] BETWEEN '{Opc_Ctu.Ini}' AND '{Opc_Ctu.Fim}' +
+AND [Ope$] BETWEEN '{Opc_Trb.Ini}' AND '{Opc_Trb.Fim}' +
+AND [Lpr$] LIKE '{Opc_Lpr.Msk}' +
+AND [Fpr$] LIKE '{Opc_Fpr.Msk}' +
+ORDER BY Ndoc$,RecIde

##


'==============================================================================
#DOC_x - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=CprPro
Nome                       [DocNom]=ProDoc,Produção

'formato
Saida/Impressora           [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

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


'funcoes de listagem
Listar cabecalho            [FxCAB]=CprPro_Cab
Listar linhas               [FxLIN]=CprPro_Lin
Listar fim                  [FxFIM]=CprPro_Fim
##


'==============================================================================
#DOC_x - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ProDocXls,Doc. Produção (XLS)

'formato
Saida/Impressora           [DocPrt]=NULA
Linhas por pagina          [DocLpg]=50
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]=ProDocXls
Listar cabecalho            [FxCAB]=ProDocXls_Cab
Listar linhas               [FxLIN]=ProDocXls_Lin,0; Art,0; Sep, 0
Listar fim                  [FxFIM]=ProDocXls_Fim

Matriz auxiliar            [DocMat]=CprProDoc.xls

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=OprDoc
Subtotalizadores           [SQLSbt]=
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ProRegcXls,Produção (XLS)

'formato
Saida/Impressora           [DocPrt]=NULA
Linhas por pagina          [DocLpg]=50
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]=ProRegXls
Listar cabecalho            [FxCAB]=ProRegXls_Cab
Listar linhas               [FxLIN]=ProRegXls_Lin,0; Sep, 0
Listar fim                  [FxFIM]=ProRegXls_Fim

Matriz auxiliar            [DocMat]=CprProReg.xls

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ProReg
Subtotalizadores           [SQLSbt]=
##


'==============================================================================
#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)
'DataExt   = FrmDt$("EXT",Doc_DtHoje)

'documento
vDocIde  = DocIde$                                          'identificacao
vDocDtu  = FrmDt$("",DocDtu)                                'data

'conta
CliCod    = Cta_Mst_Ct$                                     'conta
CliNom    = Cta_Mst_Nome$                                   'nome da conta
CliIde    = Cta_Mst_Ct$+" - "+Cta_Mst_Nome$                 'identificacao da conta

##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'- 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
'nada a executar
end sub


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


'------------------------------------------------------------------------------
'COM - Funcoes comuns
'------------------------------------------------------------------------------
sub PrpVarReg 'preparar dados do registo
RegTdo$  = SqlCmp$("Tdoc$")                        'tipo de documento
RegNdo$  = SqlCmp$("Ndoc$")                        'numero de documento
RegCtu$  = SqlCmp$("Ct$")                          'conta
RegLpr$  = SqlCmp$("Lpr$")                         'linha de producao
RegFpr$  = SqlCmp$("Fpr$")                         'fase de producao
RegUnp$  = SqlCmp$("Unp$")                         'unidade de producao
RegMaq$  = SqlCmp$("Maq$")                         'maquina
RegArt$  = SqlCmp$("Art$")                         'artigo
RegDtr$  = SqlCmp$("OdaDtr$")                      'data de registo
RegDtp$  = SqlCmp$("DtPro$")                       'data de producao
RegHri$  = SqlCmp$("HrIni")                        'hora de inicio
RegHrf$  = SqlCmp$("HrFim")                        'hora de fim
RegHrp   = SqlCmp("HrPro")                         'tempo de producao
RegNci   = SqlCmp("NumCic")                        'numero de ciclos
RegQup   = SqlCmp("QuPro")                         'quantidade produzida
RegQur   = SqlCmp("QuRej")                         'quantidade rejeitada
RegOpe$  = SqlCmp$("Ope$")                         'operario
RegVcu   = SqlCmp("Vcu")                           'custo unitario
RegObs$  = SqlCmp$("DivObs$")                      'observacoes
end sub


sub PrpVarDoc 'preparar dados do documento
DocTdo$  = SqlCmp$("Tdoc$")
DocNdo$  = SqlCmp$("Ndoc$")
DocIde$  = DocTdo$ + " " + FrmNdo$("46", DocTdo$, DocNdo$)
DocDtu   = SqlCmp("Dtl")

DocCtu$  = SqlCmp$("CtEnt$")                       'conta
end sub


sub PrpVarCtu 'preparar dados da conta
ctu$ = DocCtu$                                     'conta a usar
res  = CtaContaLer(ctu$)                           'preparar dados da conta
end sub


sub PrpVarArt 'preparar dados do artigo
idq$ = "ART"                                       'identificador do qwery

ArtCod$  = SqlQryCmp$(idq$, "Art$")                'artigo
ArtQua   = SqlQryCmp(idq$, "Qu")                   'quantidade

'consultar artigo
res      = SqlOpcAct("Art.Cod", ArtCod$)           'registar artigo
ArtNom$  = SqlCalc$("ARTNOM")                      'preparar nome do artigo

ArtCov$  = StcCodFrm$(ArtCod$)                     'codigo do artigo formatado
'ArtNom$  = SqlOpcCon$("NOME$")                     'nome do artigo
end sub


Sub PrpDocArt 'preparar artigos do documento
res     = SqlOpcAct("DOC.TDO", DocTdo$)            'registar tipo de documento
res     = SqlOpcAct("DOC.NDO", DocNdo$)            'registar numero de documento

cntArt = 0                                         'limpar contador

idq$ = "ART"                                       'identificador do qwery
exi = SqlQryGer(idq$, "OprArt")                    'preparar ultimo movimento
while exi = 1
cntArt = cntArt + 1                                'contar
call PrpVarArt                                     'preparar dados do artigo
call ProDocXls_LinArt                              'listar artigo

exi = SqlQryRgs(idq$)                              'registo seguinte
wend
end sub


'==============================================================================
'= XLS - Funcoes comuns =======================================================
'==============================================================================
Sub Xls_DocIni 'inicializar documento
end sub


Sub Xls_DocFim 'terminar documento
end sub


Sub Xls_LinInc 'incrementar linha
end sub


Sub XlsVnd_LinSep 'linha de separacao
call XlsVnd_IncLin                                 'incrementar linha
end sub


'==============================================================================
'= Listagem para EXCEL ========================================================
'==============================================================================

'==============================================================================
'- [XLS] - Documentos de Producao
'==============================================================================
Sub ProDocXls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:CprPro.xls"                      'nome do ficheiro a gerar
xlsOpcWks$ = "Valores"                             'nome da woorksheet

call XlsComDoc_IniMat                              'inicializar documento por matriz

'preparacao especifica
'nada a executar

'preparar cabecalho
'lstTit$ ="Ordem de Produção"                       'titulo da listagem
'res = XlsIdeLst("Lst_Tit" , lstTit$)               'titulo da listagem

call XlsComEmp_Ide                                 'identificar empresa
call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coBas = 2                                          'base
coCod = 3                                          'codigo
coDes = 4                                          'descricao
coQua = 5                                          'quantidade
coObs = 6                                          'observacoes

'diversos
cntDoc = 0                                         'contagem de documentos
end sub


Sub ProDocXls_DocFim 'terminar documento
call XlsComDoc_Fim                                 'terminar/mostrar documento
end sub


Sub ProDocXls_LstArt 'listar artigos
call PrpDocArt                                     'preparar artigos do documento

end sub


Sub ProDocXls_IncLin 'incrementar linha
'call XlsComLin_Inc                                 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal
end sub


Sub ProDocXls_Cab 'cabecalho
'nada a executar
end sub


Sub ProDocXls_LinSep 'linha de separacao
call ProDocXls_IncLin                              'incrementar linha
end sub


Sub ProDocXls_Lin 'linha de valores - documento
cntDoc = cntDoc + 1                                'contagem de documentos
if cntDoc > 1 then                                 'separar ?
   call ProDocXls_LinSep                           'linha de separacao
end if

call ProDocXls_IncLin                              'incrementar linha

'valores
call PrpVarDoc                                     'preparar dados do documento
call PrpVarCtu                                     'preparar dados da conta

txDtu$ = "'" + FrmDt$("", DocDtu)                  'valor para data

ideCt$ = CTA_MST_Ct$ + " - " + CTA_MST_Nome$       'identificacao da conta

'listar
res = XlsLst(liUsa, coBas, cntDoc)                 'numero
res = XlsLst(liUsa, coCod, txDtu$)                 'data
res = XlsLst(liUsa, coDes, @vDocIde)               'documento
res = XlsLst(liUsa, coObs, ideCt$)                 'observacoes

call ProDocXls_LstArt                              'listar artigos
end sub


Sub ProDocXls_LinArt 'linha de artigo
call ProDocXls_IncLin                              'incrementar linha

'valores
xCov$ = "'" + artCov$                              'dados para codigo
obs$ = ""                                          'observacoes

'listar
res = XlsLst(liUsa, coBas, cntArt)                 'numero
'res = XlsLst(liUsa, coCod, artCov$)                'codigo
res = XlsLst(liUsa, coCod, xCov$)                  'codigo
res = XlsLst(liUsa, coDes, artNom$)                'identificacao
res = XlsLst(liUsa, coQua, artQua)                 'quantidade
res = XlsLst(liUsa, coObs, obs$)                   'observacoes

'zon$= XlsZon$(liUsa, coTip, liUsa, coObs)          'zona para border
'res = XlsEnvZon(zon$, "T,B", "C", "F", 1)          'desenhar border
end sub


'- Terminar/Totais ------------------------------------------------------------
Sub ProDocXls_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas

'preparar
ltoUsa = linFim                                    'linha para totais
liUsa = linFim                                     'linha a usar

ide$ = "Documentos:"                               'informacao

'listar
res = XlsLst(liUsa, coCod,"Documentos:")           'informacao
res = XlsLst(liUsa, coDes, cntDoc)                 'numero
end sub


'==============================================================================
'- [XLS] - Registos de Producao
'==============================================================================
Sub ProRegXls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:CprProReg.xls"                   'nome do ficheiro a gerar
xlsOpcWks$ = "Valores"                             'nome da woorksheet

call XlsComDoc_IniMat                              'inicializar documento por matriz

'preparacao especifica
'nada a executar

'preparar cabecalho
call XlsComEmp_Ide                                 'identificar empresa
call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coBas = 2                                          'base
coTdo = 3                                          'tipo de documento
coNdo = 4                                          'numero de documento
coCtu = 5                                          'conta
coLpr = 6                                          'linha de producao
coFpr = 7                                          'fase de producao
coUnp = 8                                          'unidade de producao
coMaq = 9                                          'maquina
coArt = 10                                         'artigo
coDtr = 11                                         'data de registo
coDtp = 12                                         'data de producao
coHri = 13                                         'hora de inicio
coHrf = 14                                         'hora de fim
coHrp = 15                                         'tempo de producao
coNci = 16                                         'numero de ciclos
coQup = 17                                         'quantidade produzida
coQur = 18                                         'quantidade rejeitada
coOpe = 19                                         'operario
coVcu = 20                                         'custo unitario
coObs = 21                                         'observacoes

'diversos
cntReg = 0                                         'contagem de registos
end sub


Sub ProRegXls_DocFim 'terminar documento
call XlsComDoc_Fim                                 'terminar/mostrar documento
end sub


Sub ProRegXls_IncLin 'incrementar linha
'call XlsComLin_Inc                                 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal
end sub


Sub ProRegXls_Cab 'cabecalho
'nada a executar
end sub


Sub ProRegXls_Lin 'linha de valores - documento
cntReg = cntReg + 1                                'contagem de registos
call ProRegXls_IncLin                              'incrementar linha

'valores
call PrpVarReg                                     'preparar dados do registo

usaNdo$ = FrmNdo$("46", RegTdo$, RegNdo$)          'valor para numero de documento
usaDtr$ = "'" + left$(RegDtr$, 10)                 'valor para data de registo
usaHri$ = "'" + FrmHr$("HM",RegHri$)               'valor para hora de inicio
usaHrf$ = "'" + FrmHr$("HM",RegHrf$)               'valor para hora de fim
usaHrp$ = "'" + FrmHs$("HM",RegHrp)                'valor para tempo de producao
usaOpe$ = "'" + RegOpe$                            'valor para operario

'listar
res = XlsLst(liUsa, coBas, cntReg)                 'numero
res = XlsLst(liUsa, coTdo, RegTdo$)                'tipo de documento
res = XlsLst(liUsa, coNdo, usaNdo$)                'numero de documento
res = XlsLst(liUsa, coCtu, RegCtu$)                'conta
res = XlsLst(liUsa, coLpr, RegLpr$)                'linha de producao
res = XlsLst(liUsa, coFpr, RegFpr$)                'fase de producao
res = XlsLst(liUsa, coUnp, RegUnp$)                'unidade de producao
res = XlsLst(liUsa, coMaq, RegMaq$)                'maquina
res = XlsLst(liUsa, coArt, RegArt$)                'artigo
res = XlsLst(liUsa, coDtr, usaDtr$)                'data de registo
res = XlsLst(liUsa, coDtp, RegDtp$)                'data de producao
res = XlsLst(liUsa, coHri, usaHri$)                'hora de inicio
res = XlsLst(liUsa, coHrf, usaHrf$)                'hora de fim
res = XlsLst(liUsa, coHrp, usaHrp$)                'tempo de producao
res = XlsLst(liUsa, coNci, RegNci )                'numero de ciclos
res = XlsLst(liUsa, coQup, RegQup )                'quantidade produzida
res = XlsLst(liUsa, coQur, RegQur )                'quantidade rejeitada
res = XlsLst(liUsa, coOpe, usaOpe$)                'operario
res = XlsLst(liUsa, coVcu, RegVcu )                'custo unitario
res = XlsLst(liUsa, coObs, RegObs$)                'observacoes
end sub


'- Terminar/Totais ------------------------------------------------------------
Sub ProRegXls_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas

'preparar
ltoUsa = linFim                                    'linha para totais
liUsa = linFim                                     'linha a usar

ide$ = "Registos"                                  'informacao

'listar
res = XlsLst(liUsa, coBas, cntReg)                 'numero
res = XlsLst(liUsa, coTdo, ide$)                   'informacao
end sub

##


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

