DEFINE CLASS TestCOM AS Session OLEPUBLIC Codigo = [] Loja = [] PathDirTemp = [] PathTabelas = [] TabelaSaida = [] *-- Documentation for properties DIMENSION Codigo_COMATTRIB[4] Codigo_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE Codigo_COMATTRIB[2] = [Product code.] Codigo_COMATTRIB[3] = [Codigo] Codigo_COMATTRIB[4] = [String] DIMENSION Loja_COMATTRIB[4] Loja_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE Loja_COMATTRIB[2] = [Shop code.] Loja_COMATTRIB[3] = [Loja] Loja_COMATTRIB[4] = [String] DIMENSION PathDirTemp_COMATTRIB[4] PathDirTemp_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE PathDirTemp_COMATTRIB[2] = [Temp Files Directory.] PathDirTemp_COMATTRIB[3] = [PathDirTemp] PathDirTemp_COMATTRIB[4] = [String] DIMENSION PathTabelas_COMATTRIB[4] PathTabelas_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE PathTabelas_COMATTRIB[2] = [Database Directory.] PathTabelas_COMATTRIB[3] = [PathTabelas] PathTabelas_COMATTRIB[4] = [String] DIMENSION TabelaSaida_COMATTRIB[4] TabelaSaida_COMATTRIB[1] = 1024 && COMATTRIB_NONBROWSABLE TabelaSaida_COMATTRIB[2] = [Result Table name.] TabelaSaida_COMATTRIB[3] = [TabelaSaida] TabelaSaida_COMATTRIB[4] = [String] *-- End of Prop Documentation *-- Method Declaration PROCEDURE Init *-- Class init ENDPROC PROCEDURE Destroy *-- Classe fin CLOSE TABLES ALL CLOSE DATABASES ALL ENDPROC PROCEDURE Error (lnNumErro,lcMetodo,lnLinha) *-- Gerenciador de Erros da Classe LOCAL lcMsgErro,lnTransacao *-- Verify transaction level lnTransacao = TXNLEVEL() FOR i=1 TO lnTransacao ROLLBACK ENDFOR lcMsgErro = ; DTOC(Datetime())+ ; " | Error Number:" + Transform(lnNumErro) + ; " | MethodName:" + lcMetodo + ; " | LineNo:" + Transform(lnLinha) + ; " | Message:" + Message() Strtofile(lcMsgErro + Chr(13), This.pathTabelas + "error.log", .T. ) && save erros in log file ComReturnError([ComEstoque],lcMsgErro) ENDPROC HIDDEN PROCEDURE AbreArquivos *-- Open Shared and Buffer Files ENDPROC HIDDEN PROCEDURE FechaArquivos *-- Close all files opened by AbreArquivos ENDPROC *-- Code property methods HIDDEN Function Codigo_ACCESS *-- Validação do Código RETURN This.Codigo ENDFUNC HIDDEN Function Codigo_ASSIGN LPARAMETERS lcNovoValor *!* This.AbreArquivos() *!* *!* SELECT codigo FROM g2_estca WHERE codigo = m.lcNovoValor INTO ARRAY laCodigo *!* *!* IF _tally = 0 *!* COMRETURNERROR([COMEstoque],[Produto não encontrado]) *!* RETURN .F. *!* ENDIF *!* *!* This.FechaArquivos() This.Codigo = m.lcNovoValor ENDFUNC *-- PathTabelas property's method HIDDEN FUNCTION PathTabelas_access *-- Validação do parâmetro IF EMPTY(This.PathTabelas) This.PathTabelas = [d:\gereswin7\datacdx\] ENDIF IF !DIRECTORY(This.PathTabelas) COMRETURNERROR([ComEstoque],[O diretório não existe.]) RETURN .F. ENDIF IF !FILE(This.PathTabelas + [gereswin.dbc]) COMRETURNERROR([ComEstoque],[Diretório inválido - GeresWin.DBC não encontrado.]) RETURN .F. ENDIF RETURN This.PathTabelas ENDFUNC HIDDEN FUNCTION PathTabelas_assign LPARAMETERS lcNovoValor *-- Existe a possibilidade de ser configurado em um ini *-- Validação do parâmetro This.PathTabelas = m.lcNovoValor ENDFUNC FUNCTION ConsultaEstoque(cCodigo AS String,cLoja AS String) ; HELPSTRING [Esta função consulta estoque de um produto em uma determinada loja, e grava uma tabela temporária em disco, cujo caminho fica registrado na propriedade TabelaSaida.] *-- Consulta ao estoque e criação de cursor. LOCAL lcFiltro,lcNomeArq,lnRet lcFiltro = [AND ] lcNomeArq = This.PathDirTemp + [_tmpEstoq.dbf] IF VARTYPE(cLoja) <> [C] lcFiltro = lcFiltro + [.T.] ELSE lcFiltro = lcFiltro + [g2_estoq.loja == cLoja] ENDIF IF VARTYPE(cCodigo) <> [C] COMRETURNERROR([COMEstoque],[Código não informado]) RETURN .F. ENDIF This.AbreArquivos() SELECT ; g2_estoq.loja ,; g2_estoq.qtd_saldo ,; g2_estoq.custo_med ,; g2_estoq.ant_inv ,; g2_estoq.dat_custo ,; g2_estoq.dat_est ,; g2_estoq.dat_inv ,; g2_estoq.datultcomp ,; g2_estoq.dia_giro ,; g2_estoq.local ,; g2_estoq.pccompsicm ,; g2_estoq.qtd_est ,; g2_estoq.qtd_giro ,; g2_estoq.qtd_inv ,; g2_estoq.qtd_max ,; g2_estoq.qtd_min ,; g2_estoq.valultcomp ; FROM ; g2_estoq ; WHERE ; g2_estoq.codigo == cCodigo ; &lcFiltro ; INTO TABLE ; (lcNomeArq) READWRITE lnRet = _TALLY IF lnRet > 0 This.TabelaSaida = lcNomeArq ENDIF This.FechaArquivos() CLOSE TABLES ALL RETURN lnRet ENDFUNC FUNCTION ConsultaMovimentacao(cCodigo AS String,cLoja AS String) ; HELPSTRING [Esta função consulta a movimentação para um produto em uma determinada loja, e grava uma tabela temporária em disco, cujo caminho fica registrado na propriedade TabelaSaida.] *-- Consulta ao estoque e criação de cursor. LOCAL lcFiltro,lcNomeArq,lnRet lcFiltro = [AND ] IF VARTYPE(cLoja) <> [C] lcFiltro = lcFiltro + [.T.] ELSE lcFiltro = lcFiltro + [g2_estmo.loja == cLoja] ENDIF IF VARTYPE(cCodigo) <> [C] COMRETURNERROR([COMEstoque],[Código não informado]) RETURN .F. ENDIF This.AbreArquivos() SELECT ; loja ,; data ,; qtd_lanca ,; qtd_saldo ; FROM ; g2_estmo ; WHERE ; g2_estmo.codigo = cCodigo ; INTO TABLE ; d:\gereswin7\pablocdx\_tmpMovim.dbf lcNomeArq = This.PathDirTemp + [_tmpMovim.dbf] lnRet = _TALLY IF lnRet > 0 This.TabelaSaida = lcNomeArq ENDIF This.FechaArquivos() CLOSE TABLES ALL RETURN lnRet ENDFUNC *-- Fim da declaração de métodos ENDDEFINE