You are on page 1of 20

1 #INCLUDE "Acda030.

ch"
2 #INCLUDE "Protheus.ch"
3 /*/
4 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
5 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
6 ±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
7 ±±³Fun‡…o ³ ACDA030 ³ Autor ³ Ricardo ³ Data ³ 23/03/01 ³±±
8 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
9 ±±³Descri‡…o ³ Programa de manutencao no arquivo mestre de inventario ³±±
10 ±±³ ³ ³±±
11 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
12 ±±³ Uso ³ SIGAACD ³±±
13 ±±ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
14 ±±³ PROGRAMADOR ³ DATA ³ BOPS ³ MOTIVO DA ALTERACAO ³±±
15 ±±ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
16 ±±³ ³ ³ ³ ³±±
17 ±±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
18 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
19 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
20 /*/
21 Function ACDA030()
22
23 Local aCores := {}
24 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
25 //³ Define Array contendo as Rotinas a executar do programa ³
26 //³ ----------- Elementos contidos por dimensao ------------ ³
27 //³ 1. Nome a aparecer no cabecalho ³
28 //³ 2. Nome da Rotina associada ³
29 //³ 3. Usado pela rotina ³
30 //³ 4. Tipo de Transa‡„o a ser efetuada ³
31 //³ 1 - Pesquisa e Posiciona em um Banco de Dados ³
32 //³ 2 - Simplesmente Mostra os Campos ³
33 //³ 3 - Inclui registros no Bancos de Dados ³
34 //³ 4 - Altera o registro corrente ³
35 //³ 5 - Remove o registro corrente do Banco de Dados ³
36 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
37 PRIVATE aRotina := MenuDef()
38
39 PRIVATE cDelFunc := "ACDA30Exc()"
40 PRIVATE lLocaliz := GetMv('MV_LOCALIZ')=='S'
41
42 If ExistBlock('ACD030MNU')
43 ExecBlock('ACD030MNU',.F.,.F.)
44 EndIf
45
46 If ! IntAcd(.T.)
47 Return .F.
48 EndIf
49
50
51 If ! SuperGetMV("MV_CBPE012",.F.,.F.)
52 CBAlert(STR0019) //"Necessario ativar o parametro MV_CBPE012"
53 Return .F.
54 EndIf
55
56 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
57 //³ Define o cabecalho da tela de atualizacoes ³
58 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
59 PRIVATE cCadastro := STR0008 // //"Mestre de inventario"
60
61 aCores := { { "CBA->CBA_STATUS == '0'", "BR_VERDE"},;
62 { "CBA->CBA_STATUS == '1'", "BR_AMARELO"},;
63 { "CBA->CBA_STATUS == '2'", "BR_CINZA"},;
64 { "CBA->CBA_STATUS == '3'", "BR_LARANJA"},;
65 { "CBA->CBA_STATUS == '4'", "BR_AZUL"},;
66 { "CBA->CBA_STATUS == '7'", "BR_BRANCO"},;
67 { "CBA->CBA_STATUS == '5'", "BR_VERMELHO"},;
68 { "CBA->CBA_STATUS == '6'", "BR_PRETO"} }
69 mBrowse( 6, 1, 22, 75, "CBA", , , , , , aCores, , , ,{|x|TimerBrw(x)})
70 Return
71
72 /*
73 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
74 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
75 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
76 ±±ºPrograma ³Acda30Inc ºAutor ³Eduardo Motta º Data ³ 08/03/02 º±±
77 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
78 ±±ºDesc. ³ Inclusao do mestre de inventario º±±
79 ±±º ³ º±±
80 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
81 ±±ºUso ³ SIGAACD º±±
82 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
83 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
84 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
85 */
86 Function ACDA30Inc(cAlias,nReg,nOPc)
87 Private lInclui := .t.
88 Return AxInclui(cAlias,nReg,nOPc,nil,nil,nil,"ACDA30Chk()")
89
90 /*
91 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
92 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
93 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
94 ±±ºPrograma ³Acda30Alt ºAutor ³Eduardo Motta º Data ³ 08/03/02 º±±
95 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
96 ±±ºDesc. ³ Alteracao do mestre de inventario º±±
97 ±±º ³ º±±
98 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
99 ±±ºUso ³ SIGAACD º±±
100 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
101 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
102 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
103 */
104 Function ACDA30Alt(cAlias,nReg,nOPc)
105 Private lInclui := .f.
106 If CBA->CBA_STATUS=="1"
107 Alert(STR0020) //"Inventario em andamento, nao sera possivel alterar!!!"
108 Return
109 EndIf
110
111 If CBA->CBA_STATUS=="2"
112 Alert(STR0021) //"Inventario em pausa, nao sera possivel alterar!!!"
113 Return
114 EndIf
115
116 If CBA->CBA_STATUS$"543"
117 Alert(STR0022) //"Inventario concluido, nao sera possivel alterar!!!"
118 Return
119 EndIf
120 Return AxAltera(cAlias,nReg,nOPc,nil,nil,nil,nil,"ACDA30Chk()")
121
122 /*
123 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
124 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
125 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
126 ±±ºPrograma ³Acda30Del ºAutor ³Anderson Rodrigues º Data ³ 18/02/03 º±±
127 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
128 ±±ºDesc. ³Exclusao do Mestre de inventario º±±
129 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
130 ±±ºUso ³ SIGAACD º±±
131 ±±ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
132 ±±³ PROGRAMADOR ³ DATA ³ BOPS ³ MOTIVO DA ALTERACAO ³±±
133 ±±ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
134 ±±³Erike Yuri ³13/07/04³ ³Alteracao que permite excluir SB7 quando³±±
135 ±±³ ³ ³ ³o Status estiver finalizado,CBA_STATUS=4³±±
136 ±±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
137 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
138 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
139 */
140 Function Acda30Del(cAlias,nReg,nOPc)
141 Local nI := 0
142 Local aSB7 := SB7->(GetArea())
143 Local cCodInv := CBA->CBA_CODINV
144 Local aProdDel:= {}
145 Local lWmsNew := SuperGetMV("MV_WMSNEW",.F.,.F.)
146 Local oEstEnder := Iif(lWmsNew,WMSDTCEstoqueEndereco():New(),Nil)
147 Private lInclui := .f.
148 If CBA->CBA_STATUS == "5" // processadoo
149 MsgAlert(STR0023) //"Nao e permitida a exclusao de Mestres de Inventario ja
processado !!!"
150 Return .f.
151 ElseIf CBA->CBA_STATUS == "4" // finalizado
152 MsgAlert(STR0075+; //'Este Mestre de Inventario esta finalizado, se o mesmo for
excluido, sera efetuada a exclusao de '
153 STR0076+; //'todos "Lancamentos Inventariados" (SB7) deste Mestre, e este Mestre
de Inventario ficara com '
154 STR0077+chr(13)+chr(10)+chr(13)+chr(10)+STR0078+; //'Status de "Em
Andamento".'###'Para excluir definitivamente este '
155 STR0079+; //'Mestre de Inventario, esta rotina devera ser executada ate que o
Mestre de inventario esteja com '
156 STR0080) //'Status de "Nao Iniciado" ou "Em Andamento".'
157
158 If !IW_MSGBOX(STR0025,STR0026,"YESNO") //"Deseja prosseguir com a
exclusao?"###"Atencao"
159 Return .f.
160 Endif
161
162 //Carrega array com produtos do inventario para desbloqueio
163 CBLoadEst(aProdDel,.f.)
164 For nI:=1 To Len(aProdDel)
165 CBUnBlqInv(cCodInv,aProdDel[nI,1])
166 Next
167
168 //Como nao existe rotina automatica para a exclusao do SB7(Mata270), a exclusao
sera feita diretamente
169 Begin Transaction
170 DbSelectArea("SB7")
171 SB7->(DbOrderNickName("ACDSB701"))
172 SB7->(DbSeek(xFilial("SB7")+CBA->CBA_CODINV))
173 While SB7->(!Eof() .AND. B7_FILIAL+B7_DOC==xFilial("SB7")+CBA->CBA_CODINV)
174 RecLock("SB7",.F.)
175 SB7->(DbDelete())
176 SB7->(MsUnLock())
177 If lWmsNew
178 oEstEnder:oEndereco:SetArmazem(SB7->B7_LOCAL)
179 oEstEnder:oEndereco:SetEnder(SB7->B7_LOCALIZ)
180 oEstEnder:UpdEnder()
181 EndIf
182 SB7->(DbSkip())
183 EndDo
184
185 RecLock("CBA",.F.)
186 CBA->CBA_STATUS := "3" // contado
187 CBA->(MsUnLock())
188 End Transaction
189 RestArea(aSB7)
190 ElseIf CBA->CBA_STATUS$"3|2|1" // contado/em pausa/em andamento
191 CBB->(DbSetOrder(1))
192 CBB->(DbSeek(xFilial("CBB")+CBA->CBA_CODINV))
193 While ! CBB->(EOF()) .and. CBB->(CBB_FILIAL+CBB_CODINV) ==
xFilial("CBB")+CBA->CBA_CODINV
194 If CBB->CBB_STATUS == "1"
195 MsgAlert(STR0027+chr(13)+CHR(10)+; //"Nao e permitida a exclusao de
Mestres de Inventario com contagens em andamento!!!"
196 STR0028 ) //"Necessario excluir ou finalizar a contagem em andamento."
197 Return .f.
198 Endif
199 CBB->(DbSkip())
200 Enddo
201
202 MsgAlert(STR0029+; //"Ja foram realizadas contagens para este Mestre de
Inventario, "
203 STR0030) //"se o mesmo for excluido todas as contagens realizadas
tambem serao excluidas !!!"
204 If !IW_MSGBOX(STR0025,STR0026,"YESNO") //"Deseja prosseguir com a
exclusao?"###"Atencao"
205 Return .f.
206 Endif
207 If AxDeleta(cAlias,nReg,nOPc,nil,nil,nil) == 2
208 CBB->(DbSetOrder(1))
209 CBB->(DbSeek(xFilial("CBB")+cCodInv))
210 While ! CBB->(EOF()) .and. CBB->(CBB_FILIAL+CBB_CODINV) ==
xFilial("CBB")+cCodInv
211 While CBC->(DbSeek(xFilial("CBC")+CBB->CBB_NUM))
212
ACD35CBM(5,CBA->CBA_CODINV,CBC->CBC_COD,CBC->CBC_LOCAL,CBC->CBC_LOCALI
,CBC->CBC_LOTECT,CBC->CBC_NUMLOT,CBC->CBC_NUMSER)
213 RecLock("CBC",.f.)
214 CBC->(DbDelete())
215 CBC->(MsUnlock())
216 Enddo
217 RecLock("CBB",.f.)
218 CBB->(DbDelete())
219 CBB->(MsUnlock())
220
221 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
222 //³ Decrementa numero de contagens realizadas do mestre ³
223 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
224 CBAtuContR(cCodInv, 2)
225
226 CBB->(DbSkip())
227 Enddo
228 If CBA->CBA_STATUS == '0'
229 ACDA30Exc()
230 EndIf
231 EndIf
232 Else
233 AxDeleta(cAlias,nReg,nOPc,nil,nil,nil)
234 If CBA->CBA_STATUS == '0'
235 ACDA30Exc()
236 EndIf
237 Endif
238 Return
239
240 /*
241 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
242 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
243 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
244 ±±ºPrograma ³ACDA30Chk ºAutor ³Eduardo Motta º Data ³ 08/03/02 º±±
245 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
246 ±±ºDesc. ³Executa as validacoes padroes º±±
247 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
248 ±±ºUso ³ SIGAACD º±±
249 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
250 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
251 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
252 */
253 Function ACDA30Chk()
254 Local nTamProd := TamSX3("B1_COD")[1]
255 Local nTamEnd := TamSX3("BF_LOCALIZ")[1]
256 Local lWmsNew := SuperGetMV("MV_WMSNEW",.F.,.F.)
257
258 If M->CBA_TIPINV == "2" // Por endereco
259 If Empty(M->CBA_LOCALI)
260 Alert(STR0009) //"O campo endereco nao pode ficar em branco."
261 Return .F.
262 EndIf
263 If lWmsNew .And. WmsArmUnit(M->CBA_LOCAL) .And.
WmsEndDoca(M->CBA_LOCAL,M->CBA_LOCALI)
264 Alert(STR0114) //Não é permitido inventariar endereços do tipo 'DOCA' em
armazéns unitizados controlados pelo WMS.
265 Return .F.
266 EndIf
267 EndIf
268
269 If ! lInclui
270 Return .t.
271 EndIf
272 If M->CBA_DATA < dDataBase
273 Alert(STR0031) //"Data do Inventario menor que a database"
274 Return .f.
275 EndIf
276 If M->CBA_TIPINV=="1" // por produto
277 If !EMPTY(M->CBA_PROD) .And. !SB1->(Dbseek(xFilial("SB1")+M->CBA_PROD))
278 Return .f.
279 EndIf
280 CBA->(DbSetOrder(3))
//CBA_FILIAL+CBA_TIPINV+CBA_STATUS+CBA_LOCAL+CBA_PROD+CBA_DATA
281 If
CBA->(DbSeek(xFilial("CBA")+"1"+"0"+M->CBA_LOCAL+Padr(M->CBA_PROD,nTamProd)+DTOS(M
->CBA_DATA))) .or. ;
282
CBA->(DbSeek(xFilial("CBA")+"1"+"1"+M->CBA_LOCAL+Padr(M->CBA_PROD,nTamProd)+DT
OS(M->CBA_DATA)))
283 Alert(STR0032) //"Inventario ja cadastrado "
284 Return .f.
285 EndIf
286 Else // por endereco
287 CBA->(DbSetOrder(2))
//CBA_FILIAL+CBA_TIPINV+CBA_STATUS+CBA_LOCAL+CBA_LOCALI+CBA_DATA
288 If
CBA->(DbSeek(xFilial("CBA")+"2"+"0"+M->CBA_LOCAL+Padr(M->CBA_LOCALI,nTamEnd)+DTOS(
M->CBA_DATA))) .or. ;
289
CBA->(DbSeek(xFilial("CBA")+"2"+"1"+M->CBA_LOCAL+Padr(M->CBA_LOCALI,nTamEnd)+D
TOS(M->CBA_DATA)))
290 Alert(STR0032) //"Inventario ja cadastrado "
291 Return .f.
292 EndIf
293 EndIf
294 If ExistBlock('ACDA30OK')
295 If ! Execblock('ACDA30OK',.F.,.F.)
296 Return .f.
297 Endif
298 Endif
299 Return .T.
300
301 /*
302 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
303 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
304 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
305 ±±ºPrograma ³Acda30Exc ºAutor ³Eduardo Motta º Data ³ 04/02/02 º±±
306 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
307 ±±ºDesc. ³ Exclusao do mestre de inventario, libera o endereco º±±
308 ±±º ³ º±±
309 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
310 ±±ºUso ³ SIGAACD º±±
311 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
312 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
313 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
314 */
315 Function ACDA30Exc()
316 Local lWmsNew := SuperGetMV("MV_WMSNEW",.F.,.F.)
317 Local oEstEnder := Nil
318 If CBA->CBA_STATUS$"54" //If CBA->CBA_STATUS #"1"
319 Return .t.
320 EndIf
321 If CBA->CBA_TIPINV== "1"
322 SB2->(DbSetorder(1))
323 If SB2->(DbSeek(xFilial("SB2")+CBA->(CBA_PROD+CBA_LOCAL)))
324 RecLock("SB2")
325 SB2->B2_DTINV := CTOD("")
326 SB2->(MsUnlock())
327 EndIf
328 Else
329 If !lWmsNew
330 SBE->(DbSetOrder(1))
331 If SBE->(DbSeek(xFilial("SBE")+CBA->CBA_LOCAL+CBA->CBA_LOCALI))
332 RecLock("SBE")
333 SBE->BE_STATUS := "1"
334 SBE->BE_DTINV := CTOD('')
335 SBE->(MsUnlock())
336 EndIf
337 Else
338 oEstEnder := WMSDTCEstoqueEndereco():New()
339 oEstEnder:oEndereco:SetArmazem(CBA->CBA_LOCAL)
340 oEstEnder:oEndereco:SetEnder(CBA->CBA_LOCALI)
341 oEstEnder:UpdEnder()
342 EndIf
343 EndIf
344 Return .T.
345
346 /*
347 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
348 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
349 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
350 ±±ºPrograma ³AIVA30Loc ºAutor ³Ricardo º Data ³ 20/04/01 º±±
351 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
352 ±±ºDesc. ³ Verifica se utiliza localizacao º±±
353 ±±º ³ º±±
354 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
355 ±±ºUso ³ SIGAACD º±±
356 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
357 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
358 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
359 */
360 Function AIVA30Loc()
361 Return (M->CBA_TIPINV=="2" .AND. lLocaliz)
362
363 /*
364 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
365 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
366 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
367 ±±ºPrograma ³AIVA30Aut ºAutor ³Ricardo º Data ³ 20/04/01 º±±
368 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
369 ±±ºDesc. ³ Gera mestre inventario automaticamente conf. parametros º±±
370 ±±º ³ º±±
371 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
372 ±±ºUso ³ SIGAACD º±±
373 ±±ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
374 ±±³ PROGRAMADOR ³ DATA ³ BOPS ³ MOTIVO DA ALTERACAO ³±±
375 ±±ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
376 ±±³ Erike Yuri ³08/10/04³ ³ Inclusao de opcoes automaticas incluin-³±±
377 ±±³ ³ ³ ³ do Geracao automatica de Mestre de in- ³±±
378 ±±³ ³ ³ ³ ventario,Lancamento SB7,Acerto e Exclu-³±±
379 ±±³ ³ ³ ³ sao automatica de lancamento SB7. ³±±
380 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
381 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
382 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
383 */
384 Function AIVA30Aut()
385 Local nAcao := 0
386 Local nOpca := 0
387 Local aSays := {}
388 Local aButtons := {}
389 Local oDlg
390 Local lRetPe := .T.
391 Private cCadastro := OemToAnsi(STR0033) //"Geracao automatica"
392
393
394 AADD(aButtons, { 1,.T.,{|o| nOpca:= 1, o:oWnd:End()}})
395 AADD(aButtons, { 2,.T.,{|o| o:oWnd:End()}})
396
397 If ! Pergunte("AIA033",.T.)
398 Return
399 EndIf
400
401 nAcao := MV_PAR01
402
403 If nAcao==1 //Geracao automatica de mestre de inventario
404 AADD(aSays,OemToAnsi(STR0034)) //"Esta rotina tem o objetivo de efetuar a geracao"
405 AADD(aSays,OemToAnsi(STR0035)) //"automatica de mestres de inventario, a partir
do"
406 AADD(aSays,OemToAnsi(STR0036)) //"range informado pelo operador nos parametros."
407 FormBatch(cCadastro, aSays, aButtons,,200,450 ) // Monta Caixa de dialogo
408 If nOpca <> 1
409 Return
410 EndIf
411 If lLocaliz //Utiliza Controle de Localizacao == Gera por Produto ou Endereco
412 If ! Pergunte("AIA031",.T.) //Seleciona Produto ou Endereco
413 Return
414 EndIf
415 If mv_par01 == 01 //Produto
416 If ! Pergunte("AIA032",.T.)
417 Return
418 EndIf
419 Processa({|| AI031( )})
420 Else //Endereco
421 If ! Pergunte("AIA030",.T.)
422 Return
423 EndIf
424 If ExistBlock('AI030PER')
425 lRetPe := ExecBlock("AI030PER",.F.,.F.)
426 If ValType(lRetPe) <> 'L'
427 lRetPe:= .T.
428 EndIf
429 EndIF
430 If lRetPe
431 Processa({|| AI030( )})
432 EndIf
433 EndIf
434 Else //Nao utiliza Controle de Localizacao == Gera por Produto
435 If ! Pergunte("AIA032",.T.)
436 Return
437 EndIf
438 Processa({|| AI031( )})
439 EndIf
440 ElseIf nAcao==2 //Exclusao automatica de mestre de inventario
441 AADD(aSays,OemToAnsi(STR0037)) //"A T E N C A O:"
442 AADD(aSays,OemToAnsi(STR0038)) //"Esta rotina tem o objetivo de efetuar a
exclusao"
443 AADD(aSays,OemToAnsi(STR0039)) //"automatica de mestres de inventarios
informados "
444 AADD(aSays,OemToAnsi(STR0040)) //"nos parametros solicitados."
445 FormBatch(cCadastro, aSays, aButtons,,200,450 ) // Monta Caixa de dialogo
446 If nOpca == 1
447 If !Pergunte("AIA034",.T.) //Seleciona o Mestre de Inventario de Ate
448 Return
449 EndIf
450 Processa({||ExcluiCBA()})
451 EndIf
452 ElseIf nAcao==3 //Geracao automatica do lancamento de inventario
453 AADD(aSays,OemToAnsi(STR0081)) //'Esta rotina tem o objetivo de efetuar a
geracao automatica'
454 AADD(aSays,OemToAnsi(STR0082)) //'do lancamento de inventario (tabela SB7),
atraves da tabela'
455 AADD(aSays,OemToAnsi(STR0083)) //'de mestre de inventario (CBA), que ja foi
finalizada. Caso'
456 AADD(aSays,OemToAnsi(STR0084)) //'o modelo do inventario seja o "2", so sera
gerado lancamento'
457 AADD(aSays,OemToAnsi(STR0085)) //'para os totais inventariados diferentes do
saldo em estoque.'
458 FormBatch(cCadastro, aSays, aButtons,,200,450 ) // Monta Caixa de dialogo
459 If nOpca == 1
460 If !Pergunte("AIA034",.T.) //Seleciona o Mestre de Inventario de Ate
461 Return
462 EndIf
463 Processa({||GeraSB7Auto()})
464 EndIf
465 ElseIf nAcao==4 //Exclusao automatica do lancamento de inventario
466 AADD(aSays,OemToAnsi(STR0037)) //"A T E N C A O:"
467 AADD(aSays,OemToAnsi(STR0038)) //"Esta rotina tem o objetivo de efetuar a
exclusao"
468 AADD(aSays,OemToAnsi(STR0041)) //"automatica dos lancamentos de inventarios
infor-"
469 AADD(aSays,OemToAnsi(STR0042)) //"mados nos parametros solicitados."
470 FormBatch(cCadastro, aSays, aButtons,,200,450 ) // Monta Caixa de dialogo
471 If nOpca == 1
472 If !Pergunte("AIA034",.T.) //Seleciona o Mestre de Inventario de Ate
473 Return
474 EndIf
475 Processa({||ExcluiSB7()})
476 EndIf
477 ElseIf nAcao==5 //Geracao de acerto automatico
478 AADD(aSays,OemToAnsi(STR0086)) //'Esta rotina ira gerar movimentacoes de ajuste
para corrigir o saldo do'
479 AADD(aSays,OemToAnsi(STR0087)) //'estoque. Estas movimentacoes serao baseadas
nas contagens realizadas e'
480 AADD(aSays,OemToAnsi(STR0088)) //'cadastradas na rotina de inventario.'
481 AADD(aSays,OemToAnsi(STR0089)) //'Esta rotina tambem ira efetuar o ajuste das
etiquetas (CB0), caso o'
482 AADD(aSays,OemToAnsi(STR0090)) //'cliente utilize codigo interno.'
483 FormBatch(cCadastro, aSays, aButtons,,200,450 ) // Monta Caixa de dialogo
484 If nOpca == 1
485 If !Pergunte("AIA036",.T.) //Seleciona o Mestre de Inventario de Ate
486 Return
487 EndIf
488 Processa({||GeraAcerto()})
489 EndIf
490 EndIf
491 Return
492
493
494 /*
495 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
496 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
497 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
498 ±±ºPrograma ³AI030 ºAutor ³Microsiga º Data ³ 20/04/01 º±±
499 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
500 ±±ºDesc. ³ Geracao do CBA º±±
501 ±±º ³ Por Endereco º±±
502 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
503 ±±ºUso ³ SIGAACD º±±
504 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
505 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
506 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
507 */
508 Static Function AI030()
509 Local cCodInv := ""
510 Local lACDA30VE := ExistBlock("ACDA30VE") // Por Endereco
511 Local lACD030FM := ExistBlock("ACD030FM") // Fim da Rotina
512 Local aLog := {}
513 Local aArea := SGetArea()
514 SGetArea(aArea,"CBA")
515
516 If MV_PAR05 < 1
517 MsgAlert(STR0043) //"O numero de contagens nao pode ser igual ou inferior a
zero, favor verificar !!!"
518 Return
519 EndIf
520
521 dbSelectArea("SBE")
522 SBE->(dbSetOrder(1))
523 SBE->(dbSeek(xFilial("SBE")+MV_PAR01,.T.))
524 While !SBE->(Eof()) .and. xFilial("SBE") == SBE->BE_FILIAL .and. SBE->BE_LOCAL <=
MV_PAR02
525
526 If !(SBE->BE_LOCALIZ >= MV_PAR03 .and. SBE->BE_LOCALIZ <= MV_PAR04)
527 IncProc()
528 SBE->(dbSkip())
529 Loop
530 EndIf
531
532 CBA->(dbSetOrder(2))
//CBA_FILIAL+CBA_TIPINV+CBA_STATUS+CBA_LOCAL+CBA_LOCALI+CBA_DATA
533 If
CBA->(dbSeek(xFilial("CBA")+"2"+"0"+SBE->BE_LOCAL+SBE->BE_LOCALIZ+DTOS(MV_PAR06)))
.OR.;
534
CBA->(dbSeek(xFilial("CBA")+"2"+"1"+SBE->BE_LOCAL+SBE->BE_LOCALIZ+DTOS(MV_PAR0
6)))
535 IncProc()
536 SBE->(DbSkip())
537 Loop
538 EndIf
539
540 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
541 //³ Ponto de Entrada para Validar o SBE ³
542 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
543 If lACDA30VE
544 lOK := ExecBlock("ACDA30VE",.F.,.F.) //Por Endereco
545 If (ValType(lOk) == "L")
546 If !lOK
547 aadd(aLog,{"AI030","98",NIL,NIL,SBE->BE_LOCAL,SBE->BE_LOCALIZ})
548 IncProc()
549 SBE->(dbSkip())
550 Loop
551 EndIf
552 EndIf
553 EndIf
554
555 cCodInv := GetSXENum("CBA","CBA_CODINV")
556 RecLock("CBA",.T.)
557 CBA->CBA_Filial := xFilial("CBA")
558 CBA->CBA_CODINV := cCodInv
559 CBA->CBA_DATA := MV_PAR06
560 CBA->CBA_CONTS := MV_PAR05
561 CBA->CBA_STATUS := "0"
562 CBA->CBA_TIPINV := "2"
563 CBA->CBA_LOCAL := SBE->BE_LOCAL
564 CBA->CBA_LOCALI := SBE->BE_LOCALIZ
565 CBA->CBA_CLASSA := Str(MV_PAR07,1)
566 CBA->CBA_CLASSB := Str(MV_PAR08,1)
567 CBA->CBA_CLASSC := Str(MV_PAR09,1)
568 MsUnlock()
569 If __lSX8
570 ConfirmSx8()
571 EndIf
572 //Mestres de Inventario gerados
573 aadd(aLog,{"AI030","01",CBA_CODINV,NIL,CBA->CBA_LOCAL,CBA->CBA_LOCALI})
574
575 IncProc()
576 SBE->(dbSkip())
577 EndDo
578 SRestArea(aArea)
579
580 If lACD030FM
581 ExecBlock("ACD030FM",.F.,.F.)
582 EndIf
583
584 MostraLog("AI030","AIA030",aLog)
585 Return
586
587 /*
588 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
589 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
590 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
591 ±±ºPrograma ³AI031 ºAutor ³Microsiga º Data ³ 17/04/02 º±±
592 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
593 ±±ºDesc. ³ Geracao do CBA º±±
594 ±±º ³ Por Prduto º±±
595 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
596 ±±ºUso ³ SIGAACD º±±
597 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
598 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
599 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
600 */
601 Static Function AI031()
602 Local cCodInv := ""
603 Local nX := 0
604 Local lOk
605 Local lACDA30VP := ExistBlock("ACDA30VP")
606 Local lIntegraWMS := SuperGetMv('MV_WMSNEW',.F.,.F.)
607 Local aLog := {}
608 Local aArea:= SGetArea()
609 Local oProduto:= Nil
610
611 SGetArea(aArea,"CBA")
612 If MV_PAR04 < 1
613 MsgAlert(STR0043) //"O numero de contagens nao pode ser igual ou inferior a
zero, favor verificar !!!"
614 Return
615 EndIf
616
617 dbSelectArea("SB5")
618 SB5->(dbSetOrder(1))
619 dbSelectArea("SB1")
620 SB1->(dbSetOrder(1))
621 SB1->(dbSeek(xFilial("SB1")+MV_PAR02,.T.))
622 While !SB1->(Eof()) .and. xFilial("SB1") == SB1->B1_FILIAL .and. SB1->B1_COD <=
MV_PAR03
623 CBA->(dbSetOrder(3))
//CBA_FILIAL+CBA_TIPINV+CBA_STATUS+CBA_LOCAL+CBA_PROD+CBA_DATA
624 If CBA->(dbSeek(xFilial("CBA")+"1"+"0"+MV_PAR01+SB1->B1_COD+DTOS(MV_PAR05)))
.OR.;
625 CBA->(dbSeek(xFilial("CBA")+"1"+"1"+MV_PAR01+SB1->B1_COD+DTOS(MV_PAR05)))
626 IncProc()
627 SB1->(DbSkip())
628 Loop
629 EndIf
630
631 //Gerar mestre de inventario para armazens com saldo
632 //esta validacao so ocorre por produto
633 SB2->(DbSetorder(1))
634 If RetFldProd(SB1->B1_COD,"B1_LOCPAD") # MV_PAR01 .And. ;
635 !SB2->(DbSeek(xFilial("SB2")+SB1->B1_COD+MV_PAR01))
636 IncProc()
637 SB1->(DbSkip())
638 Loop
639 EndIf
640
641 //So analisa um produto para bloqueio se encontrar na tabela de complemento,
642 //caso contrario eu crio o mestre
643 If MV_PAR06==1 .and. SB5->(DbSeek(xFilial("SB5")+SB1->B1_COD))
644 If !Empty(SB5->B5_PERIOT) .And. (SB5->(B5_DTINV+B5_PERIOT)>dDataBase)
645 IncProc()
646 SB1->(DbSkip())
647 Loop
648 EndIf
649 EndIf
650
651 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
652 //³ Ponto de Entrada para Validar o SB1 ³
653 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
654 If lACDA30VP
655 lOK := ExecBlock("ACDA30VP",.F.,.F.)
656 If (ValType(lOk) == "L")
657 If !lOK
658
aadd(aLog,{"AI031","98",NIL,SB1->B1_COD,RetFldProd(SB1->B1_COD,"B1_LOC
PAD"),""})
659 IncProc()
660 SB1->(dbSkip())
661 Loop
662 Endif
663 EndIf
664 Endif
665
666 //Regra WMS para gerar inventário apenas para os produtos componentes
667 If lIntegraWMS
668 If IntWMS(SB1->B1_COD)
669 If WmsPrdPai(SB1->B1_COD)
670 MTWmsPai(SB1->B1_COD,@oProduto)
671 If aScan(oProduto:aProduto,{|x| x[1] == (oProduto:GetProduto())}) = 0
672 For nX := 1 To Len(oProduto:aProduto)
673
CBA->(dbSetOrder(3))//CBA_FILIAL+CBA_TIPINV+CBA_STATUS+CBA_LOC
AL+CBA_PROD+DTOS(CBA_DATA)
674 If
CBA->(dbSeek(xFilial("CBA")+"1"+"0"+MV_PAR01+oProduto:aProduto
[nX][1]+DTOS(MV_PAR05)))
675 Loop
676 Else
677 a030GrvCBA(oProduto:aProduto[nX][1],aLog)
678 EndIf
679 Next nX
680 Else
681 SB1->(dbSkip())
682 Loop
683 EndIf
684 Else
685 a030GrvCBA(SB1->B1_COD,aLog)
686 EndIf
687 Else
688 a030GrvCBA(SB1->B1_COD,aLog)
689 EndIF
690 Else
691 a030GrvCBA(SB1->B1_COD,aLog)
692 EndIf
693 SB1->(dbSkip())
694 EndDo
695 SRestArea(aArea)
696 MostraLog("AI031","AIA032",aLog)
697 Return
698
699
700 /*
701 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
702 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
703 ±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
704 ±±³Fun‡„o ³TimerBrw ³ Autor ³ Eduardo Motta ³ Data ³ 06/04/01 ³±±
705 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
706 ±±³Descri‡„o ³ Funcao que cria timer no mbrowse ³±±
707 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
708 ±±³Parametros³ cMBrowse -> form em que sera criado o timer ³±±
709 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
710 ±±³Retorno ³ .T. ³±±
711 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
712 ±±³Uso ³ ³±±
713 ±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
714 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
715 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
716 */
717 static Function TimerBrw(oMBrowse)
718 Local oTimer
719 DEFINE TIMER oTimer INTERVAL 1000 ACTION TmBrowse(GetObjBrow(),oTimer) OF oMBrowse
720 oTimer:Activate()
721 Return .T.
722
723
724 /*
725 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
726 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
727 ±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
728 ±±³Fun‡„o ³ TmBrowse ³ Autor ³ Eduardo Motta ³ Data ³ 06/04/01 ³±±
729 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
730 ±±³Descri‡„o ³ Funcao de timer do mbrowse ³±±
731 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
732 ±±³Parametros³ cMBrowse -> objeto mbrowse a dar refresh ³±±
733 ±±³ ³ oTimer -> objeto timer ³±±
734 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
735 ±±³Retorno ³ .T. ³±±
736 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
737 ±±³Uso ³ ³±±
738 ±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
739 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
740 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
741 */
742 static Function TmBrowse(oObjBrow,oTimer)
743 oTimer:Deactivate()
744 oObjBrow:Refresh()
745 oTimer:Activate()
746 Return .T.
747
748 /*
749 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
750 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
751 ±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
752 ±±³Fun‡„o ³AIVA030Lg ³ Autor ³ Eduardo Motta ³ Data ³ 06/04/01 ³±±
753 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
754 ±±³Descri‡„o ³ Legenda para as cores da mbrowse ³±±
755 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
756 ±±³Parametros³ Nenhum ³±±
757 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
758 ±±³Retorno ³ .T. ³±±
759 ±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
760 ±±³Uso ³ ³±±
761 ±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
762 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
763 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
764 */
765 Function AIVA30Lg()
766 Local aCorDesc := {}
767 aCorDesc := { {"BR_VERDE", STR0011},; //"Nao Iniciado"
768 {"BR_AMARELO", STR0012},; //"Em Andamento"
769 {"BR_CINZA", STR0044},; //"Em Pausa"
770 {"BR_LARANJA", STR0045},; //"Contado"
771 {"BR_AZUL", STR0013},; //"Finalizado"
772 {"BR_BRANCO", STR0113},; //Parcialmente Processado
773 {"BR_VERMELHO", STR0014},; //"Processado"
774 {"BR_PRETO", STR0112} } //"Endereco Sem Saldo"
775 BrwLegenda( STR0015,STR0016, aCorDesc ) //"Legenda - Mestre Inventario"###"Status"
776 Return( .T. )
777
778 /*
779 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
780 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
781 ±±ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍ»±±
782 ±±ºPrograma ³ExcluiCBA() ºAutor³Erike Yuri da Silva º Data ³ 11/01/05 º±±
783 ±±ÌÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍ͹±±
784 ±±ºDesc. ³ Exclui os mestres de inventario que estiverem com status deº±±
785 ±±º ³ 0 = nao iniciado º±±
786 ±±º ³ 2 = Em Pausa º±±
787 ±±º ³ 3 = Contado º±±
788 ±±ÌÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
789 ±±ºUso ³ ACDA030 º±±
790 ±±ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
791 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
792 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
793 */
794 Static Function ExcluiCBA()
795 Local nX := 0
796 Local nCount := 0
797 Local cProduto := ""
798 Local cMestre := ""
799 Local aProdEnd := {}
800 Local cTrabtem :=""
801
802 MsgAlert(STR0091+chr(13)+chr(10)+; //'Esta Rotina ira excluir todos "Mestres
Inventariados" que possuirem o seguinte status:'
803 STR0092+chr(13)+chr(10)+; //'0 = Nao iniciado'
804 STR0093+chr(13)+chr(10)+; //'2 = Em Pausa'
805 STR0094+chr(13)+chr(10)+; //'3 = Contado'
806 STR0095+; //'Para os mestres que possuirem contagem em andamento, as mesmas
deverao ser encerradas antes '
807 STR0096) //'de sua exclusao!'
808
809 If !IW_MSGBOX(STR0025,STR0026,"YESNO") //"Deseja prosseguir com a
exclusao?"###"Atencao"
810 Return .f.
811 Endif
812
813 // 1 2 3 4 5 6
814 // 123456789012345678901234567890123456789012345678901234567890
815 AutoGRLog(Replicate("=",75))
816 AutoGRLog(STR0047) //" I N F O R M A T I V O"
817 AutoGRLog(STR0048) //" H I S T O R I C O D A S E X C L U S O E S"
818 AutoGRLog(STR0049) //" D E"
819 AutoGRLog(STR0050) //" M E S T R E S D E I N V E N T A R I O"
820 AutoGRLog(Replicate("=",75))
821 AutoGRLog(STR0051) //"P A R A M E T R O S:"
822 AutoGRLog(STR0052+MV_PAR01) //"Mestre De : "
823 AutoGRLog(STR0053+MV_PAR02) //"Mestre Ate : "
824 AutoGRLog(Replicate("=",75))
825 AutoGRLog(STR0054) //"M E S T R E S P R O C E S S A D O S :"
826 AutoGRLog(Replicate("=",75))
827
828 CBA->(dbSetOrder(1))
829 CBB->(dbSetOrder(3))
830 CBC->(DbSetOrder(2))
831 CBA->(dbSeek(xFilial("CBA")+MV_PAR01,.T.))
832 While CBA->(!Eof() .and. CBA_FILIAL==xFilial("CBA") .and. CBA_CODINV<= MV_PAR02)
833 If CBA->CBA_STATUS $ "1|4|5" // Nao excluir mestres com contagem em andamento e
finalizados
834 CBA->(DbSkip())
835 IncProc()
836 Loop
837 EndIf
838 cMestre := CBA->CBA_CODINV
839 Begin Transaction
840 CBB->(DbSetOrder(1))
841 CBB->(DbSeek(xFilial("CBB")+CBA->CBA_CODINV))
842 While ! CBB->(EOF()) .and. CBB->(CBB_FILIAL+CBB_CODINV) ==
xFilial("CBB")+CBA->CBA_CODINV
843 While CBC->(DbSeek(xFilial("CBC")+CBB->CBB_NUM))
844
ACD35CBM(5,CBA->CBA_CODINV,CBC->CBC_COD,CBC->CBC_LOCAL,CBC->CBC_LOCALI
,CBC->CBC_LOTECT,CBC->CBC_NUMLOT,CBC->CBC_NUMSER)
845 RecLock("CBC",.f.)
846 CBC->(DbDelete())
847 CBC->(MsUnlock())
848 Enddo
849 RecLock("CBB",.f.)
850 CBB->(DbDelete())
851 CBB->(MsUnlock())
852
853 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
854 //³ Decrementa numero de contagens realizadas do mestre ³
855 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
856 CBAtuContR(CBA->CBA_CODINV, 2)
857
858 CBB->(DbSkip())
859 Enddo
860 //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
861 //³ Faz o desbloqueio do inventario ³
862 //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
863 aProdEnd := {}
864 CBLoadEst(aProdEnd,.f.)
865 For nX := 1 to len(aProdEnd)
866 cProduto := Subs(aProdEnd[nX,1],01,Tamsx3("B1_COD")[1])
867 CBUnBlqInv(CBA->CBA_CODINV,cProduto)
868 Next
869
870 RecLock("CBA",.F.)
871 CBA->(DbDelete())
872 CBA->(MsUnLock())
873 AutoGRLog(STR0055+CBA->CBA_CODINV+STR0056) //"Mestre: "###", excluido com
sucesso!"
874 End Transaction
875 CBA->(DbSkip())
876 IncProc()
877 nCount++
878 EndDo
879 AutoGRLog(Replicate("=",75))
880 AutoGRLog(STR0057+AllTrim(Str(nCount)) ) //"Quantidade de mestres de inventarios
excluidos.: "
881
882 cTrabtem := NomeAutoLog()
883 ExibLogEst(cTrabtem)
884 Ferase(cTrabtem)//apos utilizar o arquivo limpa a memoria
885 cTrabtem := Nil
886
887 Return
888
889
890 /*
891 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
892 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
893 ±±ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍ»±±
894 ±±ºPrograma ³GeraSB7Auto()ºAutor³Erike Yuri da Silva º Data ³ 08/10/04 º±±
895 ±±ÌÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍ͹±±
896 ±±ºDesc. ³ Geracao de Lancamento de Inventario (SB7) Automatico º±±
897 ±±º ³ º±±
898 ±±ÌÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
899 ±±ºUso ³ ACDA030 º±±
900 ±±ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
901 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
902 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
903 */
904 Static Function GeraSB7Auto()
905 Local cMestreAte := MV_PAR02
906 Local lLoop := .F.
907 Local nCountDocs := 0
908 Local nCountOk := 0
909 Local nI := 0
910 Local aAreaCBA := SGetArea()
911 Local lI := 0
912 Private lModelo1 := GetMV("MV_CBINVMD") =="1"
913 Private lUsaCB001 := UsaCB0("01")
914 Private aProdEnd := {}
915 Private lMsErroAuto := .F.
916 Private aLogMestre := {}
917
918 SGetArea(aAreaCBA,"CBA")
919
920 MsgAlert(STR0097+; //'Esta Rotina ira gerar "Lancamentos Inventariados" (SB7) dos '
921 STR0098) //'Mestres de Inventario informados no range, alterando o Status
para "Finalizado"'
922
923 If !IW_MSGBOX(STR0099,STR0026,"YESNO") //'Deseja prosseguir com a geracao de
"Lancamentos de Inventario"?'###"Atencao"
924 Return .f.
925 Endif
926
927 // 1 2 3 4 5 6
928 // 123456789012345678901234567890123456789012345678901234567890
929 AutoGRLog(Replicate("=",75))
930 AutoGRLog(STR0047) //" I N F O R M A T I V O"
931 AutoGRLog(STR0059) //" H I S T O R I C O D A S G E R A C O E S"
932 AutoGRLog(STR0049) //" D E"
933 AutoGRLog(STR0060) //" L A N C A M E N T O D O I N V E N T A R I O (SB7)"
934 AutoGRLog(Replicate("=",75))
935 AutoGRLog(STR0051) //"P A R A M E T R O S:"
936 AutoGRLog(STR0052+MV_PAR01) //"Mestre De : "
937 AutoGRLog(STR0053+cMestreAte) //"Mestre Ate : "
938 AutoGRLog(Replicate("=",75))
939 AutoGRLog(STR0061) //"I T E N S P R O C E S S A D O S :"
940 AutoGRLog(Replicate("=",75))
941
942 CBA->(dbSetOrder(1))
943 CBB->(dbSetOrder(3))
944 CBC->(DbSetOrder(2))
945 CBA->(dbSeek(xFilial("CBA")+MV_PAR01,.T.))
946 While CBA->(!Eof() .and. CBA_FILIAL==xFilial("CBA") .and. CBA_CODINV <= cMestreAte)
947 If CBA->CBA_STATUS # "3" //processa somente os mestre contados
948 CBA->(DbSkip())
949 IncProc()
950 Loop
951 EndIf
952
953 If !CBB->(dbSeek(xFilial("CBB")+CBA->CBA_CODINV))
954 CBA->(DbSkip())
955 IncProc()
956 Loop
957 EndIf
958
959 //Verifica se existe contagem em andamento
960 lLoop := .F.
961 While CBB->(!Eof() .and. CBB->CBB_FILIAL+CBB_CODINV ==
xFilial("CBB")+CBA->CBA_CODINV)
962 If CBB->CBB_STATUS=="1"
963 lLoop := .T.
964 Exit
965 EndIf
966 CBB->(dbSkip())
967 EndDo
968
969 If lLoop
970 CBA->(DbSkip())
971 IncProc()
972 Loop
973 EndIf
974
975 //Analisa produto a produto e gera SB7
976 aProdEnd := {}
977 CBLoadEst(aProdEnd,.f.)
978 lMsErroAuto := .F.
979 CBAnaInv(.t.,.t.)
980
981 CBA->(dbSkip())
982 IncProc()
983 nCountDocs++
984 EndDo
985
986 //Gravacao do Log
987 For nI:=1 To Len(aLogMestre)
988 AutoGRLog(Space(aLogMestre[nI,2]*2)+aLogMestre[nI,3])
989 If Empty(aLogMestre[nI,2]) .and. aLogMestre[nI,4]
990 nCountOk++ //Contagens Ok
991 EndIf
992 Next
993
994 AutoGRLog(Replicate("=",75))
995 AutoGRLog(STR0062+AllTrim(Str(nCountDocs))) //"Quantidade de mestres de inventarios
analisados.: "
996 AutoGRLog(STR0063+AllTrim(Str(nCountOk))) //"Quantidade de mestres de inventarios
Ok.........: "
997 AutoGRLog(STR0064+AllTrim(Str(nCountDocs-nCountOk))) //"Quantidade de mestres de
inventarios Divergentes: "
998
999 If ExistBlock('ACDA30LG')
1000 aUserLog := ExecBlock('ACDA30LG',.F.,.F.)
1001 If ValType(aUserLog) == 'A'
1002 AutoGRLog(Replicate("=",75))
1003 For lI := 1 To Len(aUserLog)
1004 AutoGRLog(aUserLog[lI,1]+aUserLog[lI,2])
1005 Next
1006 Endif
1007 Endif
1008
1009 MOSTRAERRO()
1010 SRestArea(aAreaCBA)
1011 Return
1012
1013
1014
1015 Static Function ExcluiSB7()
1016 Local nCountM := 0
1017 Local nCountD := 0
1018 Local aCBA := CBA->(GetArea())
1019 Local aSB7 := SB7->(GetArea())
1020
1021 MsgAlert(STR0100+; //'Esta Rotina ira excluir todos "Lancamentos Inventariados"
(SB7) dos '
1022 STR0101) //'Mestres de Inventario informados no range, alterando o Status
para "Em Andamento"'
1023
1024 If !IW_MSGBOX(STR0025,STR0026,"YESNO") //"Deseja prosseguir com a
exclusao?"###"Atencao"
1025 Return .f.
1026 Endif
1027
1028
1029 // 1 2 3 4 5 6
1030 // 123456789012345678901234567890123456789012345678901234567890
1031 AutoGRLog(Replicate("=",75))
1032 AutoGRLog(STR0047) //" I N F O R M A T I V O"
1033 AutoGRLog(STR0048) //" H I S T O R I C O D A S E X C L U S O E S"
1034 AutoGRLog(STR0049) //" D E"
1035 AutoGRLog(STR0060) //" L A N C A M E N T O D O I N V E N T A R I O (SB7)"
1036 AutoGRLog(Replicate("=",75))
1037 AutoGRLog(STR0051) //"P A R A M E T R O S:"
1038 AutoGRLog(STR0052+MV_PAR01) //"Mestre De : "
1039 AutoGRLog(STR0053+MV_PAR02) //"Mestre Ate : "
1040 AutoGRLog(Replicate("=",75))
1041 AutoGRLog(STR0065) //"D O C U M E N T O S P R O C E S S A D O S :"
1042 AutoGRLog(Replicate("=",75))
1043
1044 CBA->(dbSetOrder(1))
1045 CBB->(dbSetOrder(3))
1046 CBC->(DbSetOrder(2))
1047 CBA->(dbSeek(xFilial("CBA")+MV_PAR01,.T.))
1048 While CBA->(!Eof() .and. CBA_FILIAL==xFilial("CBA") .and. CBA_CODINV<= MV_PAR02)
1049
1050 If CBA->CBA_STATUS # "4" // Nao faz diferente de finalizado (status = 4 indica
que gerou sb7)
1051 CBA->(DbSkip())
1052 IncProc()
1053 Loop
1054 EndIf
1055 nCountD := 0
1056 //Como nao existe rotina automatica para a exclusao do SB7(Mata270), a exclusao
sera feita diretamente
1057 Begin Transaction
1058 DbSelectArea("SB7")
1059 SB7->(DbOrderNickName("ACDSB701"))
1060 SB7->(DbSeek(xFilial("SB7")+CBA->CBA_CODINV))
1061 While SB7->(!Eof() .AND. B7_FILIAL+B7_DOC==xFilial("SB7")+CBA->CBA_CODINV)
1062 RecLock("SB7",.F.)
1063 SB7->(DbDelete())
1064 SB7->(MsUnLock())
1065 nCountD++
1066 SB7->(DbSkip())
1067 EndDo
1068 AutoGRLog(STR0066+CBA->CBA_CODINV+STR0067+AllTrim(Str(nCountD))+ STR0068)
//"Mestre:"###", foram excluidos "###" documentos na tabela de lanc. invent."
1069 RecLock("CBA",.F.)
1070 CBA->CBA_STATUS := "3" // Contado
1071 CBA->(MsUnLock())
1072 End Transaction
1073 CBA->(DbSkip())
1074 IncProc()
1075 nCountM++
1076 EndDo
1077 AutoGRLog(Replicate("=",75))
1078 AutoGRLog(STR0062+AllTrim(Str(nCountM)) ) //"Quantidade de mestres de inventarios
analisados.: "
1079 MostraErro()
1080
1081 RestArea(aSB7)
1082 RestArea(aCBA)
1083 Return
1084
1085
1086
1087
1088 /*
1089 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
1090 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
1091 ±±ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍ»±±
1092 ±±ºPrograma ³GeraAcerto() ºAutor³Erike Yuri da Silva º Data ³ 08/10/04 º±±
1093 ±±ÌÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍ͹±±
1094 ±±ºDesc. ³ Geracao o acerto do inventario a partir no cod. do mestre º±±
1095 ±±º ³ º±±
1096 ±±ÌÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
1097 ±±ºUso ³ ACDA030 º±±
1098 ±±ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
1099 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
1100 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
1101 */
1102 Static Function GeraAcerto()
1103 Local cMestreDe := MV_PAR01
1104 Local cMestreAte := MV_PAR02
1105 Local nRecnoSB7 := 0
1106 Local aAreaCBA := SGetArea()
1107 Private lModelo1 := GetMV("MV_CBINVMD") =="1"
1108 Private lUsaCB001 := UsaCB0("01")
1109
1110 SGetArea(aAreaCBA,"CBA")
1111
1112 If !IW_MSGBOX(STR0102,STR0026,"YESNO") //'Deseja prosseguir com o "Acerto de
Inventario"?'###"Atencao"
1113 Return .f.
1114 Endif
1115
1116 SB7->(DbOrderNickName("ACDSB701"))
1117 CBA->(dbSetOrder(1))
1118 CBA->(dbSeek(xFilial("CBA")+cMestreDe,.T.))
1119 While CBA->(!Eof() .and. CBA_FILIAL==xFilial("CBA") .and. CBA_CODINV<= cMestreAte)
1120 If CBA->CBA_STATUS # "4" //Somente gera acerto do mestre de inventario que ja
esta finalizado (SB7 gerado)
1121 CBA->(DbSkip())
1122 IncProc()
1123 Loop
1124 EndIf
1125
1126 SB7->(DbSeek(xFilial("SB7")+CBA->CBA_CODINV))
1127 While SB7->(!Eof() .AND. B7_FILIAL+B7_DOC==xFilial("SB7")+CBA->CBA_CODINV)
1128 nRecnoSB7 := SB7->(Recno())
1129 MATA340(.t.,CBA->CBA_CODINV)
1130 SB7->(DbOrderNickName("ACDSB701"))
1131 SB7->(DbGoto(nRecnoSB7))
1132 SB7->(DbSkip())
1133 End
1134
1135 CBA->(dbSkip())
1136 IncProc()
1137 EndDo
1138 SRestArea(aAreaCBA)
1139 Return
1140
1141
1142
1143 Static Function MostraLog(cRotina,cPerg,aLog)
1144 Local nI := 0
1145 Local nOk := 0
1146 Local nNo := 0
1147 Local aExcecao := {}
1148 Local nTamSX1 := Len(SX1->X1_GRUPO)
1149 Local xPar := ""
1150 Local cTrabtem := ""
1151
1152 AutoGRLog(Replicate("=",75))
1153 AutoGRLog(STR0047) //" I N F O R M A T I V O"
1154 If cRotina=="AI031"
1155 AutoGRLog(STR0059) //" H I S T O R I C O D A S G E R A C O E S"
1156 AutoGRLog(STR0049) //" D E"
1157 AutoGRLog(STR0070) //" M E S T R E D E I N V E N T A R I O"
1158 ElseIf cRotina=="AI030"
1159 AutoGRLog(STR0059) //" H I S T O R I C O D A S G E R A C O E S"
1160 AutoGRLog(STR0049) //" D E"
1161 AutoGRLog(STR0070) //" M E S T R E D E I N V E N T A R I O"
1162 EndIf
1163 AutoGRLog(Replicate("=",75))
1164 AutoGRLog(STR0051) //"P A R A M E T R O S:"
1165 cPerg := PADR(cPerg,nTamSX1)
1166 SX1->(DbSetOrder(1))
1167 SX1->(DbSeek(cPerg))
1168 While SX1->(!Eof() .AND. X1_GRUPO == cPerg)
1169 xPar := cValToChar(&(SX1->X1_VAR01))
1170 If SX1->X1_GSC == 'G'
1171 SX1->(AutoGRLog(STR0071+SX1->X1_ORDEM+": "+X1_PERGUNT+xPar)) //"Pergunta "
1172 Else
1173 SX1->(AutoGRLog(STR0071+X1_ORDEM+":
"+X1_PERGUNT+If(xPar=="1",STR0103,STR0104))) //"Pergunta " //'Sim'###'Nao'
1174 Endif
1175 SX1->(DbSkip())
1176 Enddo
1177
1178 AutoGRLog(Replicate("=",75))
1179 AutoGRLog(STR0061) //"I T E N S P R O C E S S A D O S :"
1180 AutoGRLog(Replicate("=",75))
1181
1182 For nI:=1 To Len(aLog)
1183 If aLog[nI,2]=="98"
1184 aadd(aExcecao,{aLog[nI,1],NIL,aLog[nI,3],aLog[nI,4],aLog[nI,5],aLog[nI,6]})
1185 Loop
1186 EndIf
1187 If cRotina == "AI030"
1188 AutoGRLog(STR0055+aLog[nI,3]+STR0072+aLog[nI,5]+STR0073+aLog[nI,6])
//"Mestre: "###" - Local: "###" - Endereco: "
1189 ElseIf cRotina == "AI031"
1190 AutoGRLog(STR0055+aLog[nI,3]+STR0074+aLog[nI,4]+STR0072+aLog[nI,5])
//"Mestre: "###" - Produto: "###" - Local: "
1191 EndIf
1192 nOk++
1193 Next
1194
1195 If !Empty(aExcecao)
1196 AutoGRLog("")
1197 AutoGRLog(Replicate("=",75))
1198 AutoGRLog(STR0105) //"E X C E C O E S:"
1199 AutoGRLog(STR0106) //"- Nao foi gerado mestre de inventario para o(s) item(s)
abaixo."
1200 EndIf
1201
1202 For nI:=1 To Len(aExcecao)
1203 If cRotina == "AI030"
1204 AutoGRLog(STR0107+aExcecao[nI,5]+STR0073+aExcecao[nI,6]) //"Local: "###" -
Endereco: "
1205 ElseIf cRotina == "AI031"
1206 AutoGRLog(STR0108+aExcecao[nI,4]+STR0072+aExcecao[nI,5]) //"Produto: "###" -
Local: "
1207 EndIf
1208 nNo++
1209 Next
1210 AutoGRLog(Replicate("=",75))
1211 AutoGRLog(STR0109+Str(nOk)) //"Sucesso(s)....:"
1212 AutoGRLog(STR0110+Str(nNo)) //"Divergencia(s):"
1213
1214 cTrabtem := NomeAutoLog()
1215 ExibLogEst(cTrabtem)
1216 Ferase(cTrabtem)//apos utilizar o arquivo limpa a memoria
1217 cTrabtem := Nil
1218
1219 Return
1220
1221 /*/
1222 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
1223 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
1224 ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
1225 ±±ºPrograma ³MTA010MI º Autor ³ Aecio Ferreira Gomes º Data ³ 24/12/08 º±±
1226 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
1227 ±±ºDescricao ³Verifica se existe o produto na tabela CBJ º±±
1228 ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
1229 ±±ºUso ³ MATA010(Cadastro de produtos) º±±
1230 ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
1231 ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
1232 ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
1233 /*/
1234 Function MTA010MI(cProduto)
1235
1236 Local lRet := .F.
1237 Local cAliasCBA:= ""
1238
1239 cAliasCBA := GetNextAlias()
1240 cQuery := ""
1241
1242 cQuery += "SELECT COUNT(*) QTDBASE FROM " + RetSqlName( "CBA" ) + " "
1243 cQuery += "WHERE "
1244 cQuery += "CBA_FILIAL='" + xFilial( "CBA" ) + "' AND "
1245 cQuery += "CBA_PROD='" + cProduto + "' AND "
1246 cQuery += "D_E_L_E_T_=' '"
1247
1248 cQuery := ChangeQuery( cQuery )
1249 dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasCBA,.F.,.T. )
1250
1251 If (cAliasCBA)->QTDBASE > 0
1252 Help(" ",1,"MTA010MI")
1253 lRet := .T.
1254 Endif
1255
1256 Return lRet
1257 //-------------------------------------------------------------------
1258 /*/{Protheus.doc} a030GrvCBA()
1259 Função para gravar produtos normais ou partes do produto pai.
1260 @author Totvs
1261 @since 13/12/2016
1262 @version P118
1263 @return nil
1264 /*/
1265 //-------------------------------------------------------------------
1266 Function a030GrvCBA(cProduto,aLog)
1267
1268 cCodInv := GetSXENum("CBA","CBA_CODINV")
1269 RecLock("CBA",.T.)
1270 CBA->CBA_Filial := xFilial("CBA")
1271 CBA->CBA_CODINV := cCodInv
1272 CBA->CBA_DATA := MV_PAR05
1273 CBA->CBA_CONTS := MV_PAR04
1274 CBA->CBA_STATUS := "0"
1275 CBA->CBA_TIPINV := "1"
1276 CBA->CBA_PROD := cProduto
1277 CBA->CBA_LOCAL := MV_PAR01
1278 CBA->CBA_CLASSA := Str(MV_PAR07,1)
1279 CBA->CBA_CLASSB := Str(MV_PAR08,1)
1280 CBA->CBA_CLASSC := Str(MV_PAR09,1)
1281 MsUnlock()
1282 If __lSX8
1283 ConfirmSx8()
1284 EndIf
1285 //Mestres de Inventario gerados
1286 aadd(aLog,{"AI031","01",CBA_CODINV,cProduto,CBA->CBA_LOCAL})
1287
1288 IncProc()
1289 Return nil
1290
1291 //-------------------------------------------------------------------
1292 /*/{Protheus.doc} ExibLogEst()
1293 Função para mostrar log da rotina ACDA030
1294 @param ctramtem arquivos de trabalho temporario
1295 @author Jefferson Silva de Sousa
1296 @since 21/01/2020
1297 /*/
1298 //-------------------------------------------------------------------
1299 Function ExibLogEst(cTrabtem)
1300 Local oFile
1301 Local cMemo := ""
1302 Local lQuebra := .T.
1303 Default cTrabtem := ""
1304
1305
1306 oFile := FWFileReader():New(cTrabtem)
1307
1308 If (oFile:Open())
1309 While (oFile:hasLine())
1310 cMemo += oFile:GetLine(lQuebra)
1311 End
1312 oFile:Close()
1313 EndIf
1314
1315 DEFINE FONT oFont NAME "Courier New" SIZE 5,0 //6,15
1316
1317 DEFINE MSDIALOG oDlg TITLE cTrabtem From 3,0 to 340,417 PIXEL
1318
1319 @ 5,5 GET oMemo VAR cMemo MEMO SIZE 200,145 OF oDlg PIXEL
1320 oMemo:bRClicked := {||AllwaysTrue()}
1321 oMemo:oFont:=oFont
1322
1323 DEFINE SBUTTON FROM 153,175 TYPE 1 ACTION oDlg:End() ENABLE OF oDlg PIXEL //Apaga
1324 DEFINE SBUTTON FROM 153,145 TYPE 13 ACTION
(cFile:=cGetFile(cMask,OemToAnsi(STR0044)),If(cFile="",.t.,MemoWrite(cFile,cMemo))
,oDlg:End()) ENABLE OF oDlg PIXEL //Salva e Apaga //"Salvar Como..."
1325 DEFINE SBUTTON FROM 153,115 TYPE 6 ACTION
(PrintAErr(cTrabtem,cMemo),oDlg:End()) ENABLE OF oDlg PIXEL //Imprime e Apaga
1326
1327 ACTIVATE MSDIALOG oDlg CENTER
1328
1329 cMemo := Nil
1330
1331 Return
1332
1333
1334 /*/{Protheus.doc} Menudef
1335 (long_description)
1336 @type Static Function
1337 @author TOTVS
1338 @since 21/02/2020
1339 @version version
1340 @param param_name, param_type, param_descr
1341 @return return_var, return_type, return_description
1342 @example
1343 (examples)
1344 @see (links_or_references)
1345 /*/
1346 Static Function MenuDef()
1347
1348 Local aRotMenu := { }
1349
1350
1351 aRotMenu := { { STR0001, "AxPesqui", 0, 1} ,; //"Pesquisar"
1352 { STR0002, "AxVisual", 0, 2} ,; //"Visualizar"
1353 { STR0003, "ACDA30Inc", 0, 3} ,; //"Incluir"
1354 { STR0004, "ACDA30Alt", 0, 4, 17} ,; //"Alterar"
1355 { STR0005, "ACDA30Del", 0, 5, 17} ,; //"Excluir"
1356 { STR0006, "AIVA30Aut", 0, 3, 17} ,; //"Automatico"
1357 { STR0017, "ACDA032", 0, 2, 17} ,; //"Monitor"
1358 { STR0018, "ACDR030", 0, 1} ,; //"Relatorio"
1359 { STR0007, "AIVA30Lg", 0, 3} } //"Legenda"
1360
1361
1362 RETURN aRotMenu
1363

You might also like