Módulo: Seta Método: Inicio (incluir a linha abaixo no PA():) on key label CTRL+Q pa("Seta","TransfereEstoque",.t.) Módulo: Seta Método: TransfereEstoque **************************************************************************** *Programa para Analise e Transferência Total do Estoque com corte no custo.* **************************************************************************** If oUsuario.Codigo = '00000101' Create Cursor cComboGenerico(Primeiro c(50), Segundo c(50)) Insert into cComboGenerico values ('ANALISE','1') Insert into cComboGenerico values ('VENDA','2') cModelo = msInputCombo('SELECIONE OPÇÃO QUE DESEJA EXECUTAR','VENDA DO ESTOQUE',1) Do Case Case cModelo='ANALISE' Local cEmpresaOrigem, cEmpresaDestino As String cEmpresaOrigem=InputBox("Digite o codigo da empresa que deseja VENDER O ESTOQUE (Origem).","Venda de Estoques") cEmpresaDestino=InputBox("Digite o codigo da empresa que deseja COMPRAR O ESTOQUE (Destino).","Venda de Estoques") nIndice = STRTRAN(InputBox("Digite o indice de reajuste do custo 0.583 ou 1 para manter valor.","Indice"),',','.') Aviso(nIndice) msWait('Aguarde... Buscando Estoque da Loja.', 'nowait', 'noclear') cSql="" cSql=cSql+" Select MO.Produto as Produto, PR.Descricao, "+Chr(13) cSql=cSql+" (PR.Custo+(PR.Custo*(PR.IPI/100))):: Numeric(9,2) As Custo, ((PR.Custo+(PR.Custo*(PR.IPI/100)))*"+nIndice+"):: Numeric(9,2) As CustoNovo," cSql=cSql+" Sum(Case When MO.Movimento='E' Then MO.Quantidade Else -MO.Quantidade End)::Numeric(10,2) As Quantidade, 0:: Numeric(9,2) as CustoTotal, 0:: Numeric(9,2) as CustoTotalNovo"+Chr(13) cSql=cSql+" From Movimento MO"+Chr(13) cSql=cSql+" Inner Join Produtos PR On Substr(MO.Produto,1,6)::Char(6)=PR.Codigo"+Chr(13) cSql=cSql+" LEFT JOIN log ON substring(mo.Auxiliar,3,9)::bpchar = log.registro AND (Log.Operacao = '06' OR Log.Operacao = '07') AND tabela = '003' "+Chr(13) cSql=cSql+" Where PR.Desativar=False and Mo.Estoque And PR.TipoMercadoria In ('00','01','02','03','04','05','06','10','99') And MO.Empresa="+FiltroX(PadL(cEmpresaOrigem,2,'0')) +Chr(13) cSql=cSql+" Group By MO.Produto, MO.Empresa, PR.Descricao, PR.Custo, PR.IPI "+Chr(13) cSql=cSql+" Having Sum(Case When MO.Movimento='E' Then MO.Quantidade Else -MO.Quantidade End)>0 "+Chr(13) cSql=cSql+" Order By PR.Descricao "+Chr(13) _clipText = cSql ExecutaBD(cSql,"cEstoque") Wait clear msWait('Aguarde... Criando Analise dos Custos.', 'nowait', 'noclear') Select cEstoque Scan Replace cEstoque.CustoTotal With round(cEstoque.Custo * cEstoque.Quantidade,2) In cEstoque Replace cEstoque.CustoTotalNovo With round(cEstoque.CustoNovo * cEstoque.Quantidade,2) In cEstoque EndScan Wait clear msWait('Aguarde... Gerando Arquivos de Analise.', 'nowait', 'noclear') Select cEstoque nItens=Reccount('cEstoque') sData = substr(Dtoc(Date()),01,02) + substr(Dtoc(Date()),04,02) + substr(Dtoc(Date()),07,02) sHorario = substr(Time(),01,02) + substr(Time(),04,02) + substr(Time(),07,02) sEmpresa = oConfig.Empresa If Directory('c:\SetaArquivos\VenderEstoque\') == .F. Then Mkdir('c:\SetaArquivos\VenderEstoque\') Endif cArquivo = "c:\SetaArquivos\VenderEstoque\Estoque-Analise-L" + sEmpresa + "-"+ sData + "-" + sHorario Copy to &cArquivo xl5 cArquivo = cArquivo Wait Clear Aviso('Arquivo Gerado em: ' + cArquivo) Case cModelo='VENDA' Local cEmpresaOrigem, cEmpresaDestino As String cEmpresaOrigem=InputBox("Digite o codigo da empresa que deseja VENDER O ESTOQUE (Origem).","Venda de Estoques") cEmpresaDestino=InputBox("Digite o codigo da empresa que deseja COMPRAR O ESTOQUE (Destino).","Venda de Estoques") nIndice = STRTRAN(InputBox("Digite o indice de reajuste do custo 0.583 ou 1 para manter valor.","Indice"),',','.') Aviso(nIndice) msWait('Aguarde... Buscando Estoque da Loja.', 'nowait', 'noclear') cSql="" cSql=cSql+" Select MO.Produto as Produto, PR.Descricao, "+Chr(13) cSql=cSql+" (PR.Custo+(PR.Custo*(PR.IPI/100))):: Numeric(9,2) As Custo, ((PR.Custo+(PR.Custo*(PR.IPI/100)))*"+nIndice+"):: Numeric(9,2) As CustoNovo," cSql=cSql+" Sum(Case When MO.Movimento='E' Then MO.Quantidade Else -MO.Quantidade End)::Numeric(10,2) As Quantidade, 0:: Numeric(9,2) as CustoTotal, 0:: Numeric(9,2) as CustoTotalNovo"+Chr(13) cSql=cSql+" From Movimento MO"+Chr(13) cSql=cSql+" Inner Join Produtos PR On Substr(MO.Produto,1,6)::Char(6)=PR.Codigo"+Chr(13) cSql=cSql+" LEFT JOIN log ON substring(mo.Auxiliar,3,9)::bpchar = log.registro AND (Log.Operacao = '06' OR Log.Operacao = '07') AND tabela = '003' "+Chr(13) cSql=cSql+" Where PR.Desativar=False and Mo.Estoque And PR.TipoMercadoria In ('00','01','02','03','04','05','06','10','99') And MO.Empresa="+FiltroX(PadL(cEmpresaOrigem,2,'0')) +Chr(13) cSql=cSql+" Group By MO.Produto, MO.Empresa, PR.Descricao, PR.Custo, PR.IPI "+Chr(13) cSql=cSql+" Having Sum(Case When MO.Movimento='E' Then MO.Quantidade Else -MO.Quantidade End)>0 "+Chr(13) cSql=cSql+" Order By PR.Descricao "+Chr(13) *_clipText = cSql ExecutaBD(cSql,"cEstoque") nItens=Reccount('cEstoque') Wait clear If Confirma('Itens: '+Str(nItens)+Chr(13)+'Deseja Continuar com a Execucao do Script?') And nItens>0 msWait('Aguarde... Gerando as Vendas.', 'nowait', 'noclear') nItensVenda=500 nQuantidade=0 nValor=0 nXItens=1 aux=1 nQuantidadeItens=(nItens/nItensVenda) cVendas='' Select cEstoque Scan if (aux