- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Field Service - Abertura OS
×
Linguagem de Programação ADVPL
Perguntas Field Service - Abertura OS
- mariotchak
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 59
- Obrigados Recebidos: 0
11 anos 9 meses atrás #9931
por mariotchak
Respondido por mariotchak no tópico Re: Field Service - Abertura OS
Luiz Boa Noite,
Achei uma forma de fazer uma OS sem precisar utilizar diretamente a base instalada, vou utilizar o Projeto (ABH - TECA700) do Gestão de Serviços, acha uma boa?
Consegui utilizar o Reclock conforme abaixo, ele esta gerando um probjeto com os dados iniciais, com certeza minha maior dificuldade será utilizar o while para inserir os produtos, ainda mais pq precisarei abrir as quantidades. Segue fonte abaixo, estou utilizando um PE temporário, depois vou posicionar em um melhor.
User Function MT415EFT
Private _cNumPed := SCJ->CJ_NUM
dbSelectArea("SCJ")
DbSetOrder(1)
dbSeek(xFilial()+_cNumPed)
// Inclusão de Registro
RecLock("ABH",.T.)
Replace ABH_CODCLI With CJ_CLIENTE, ABH_LOJA With CJ_LOJA,;
ABH_FILIAL With CJ_FILIAL, ABH_PROJET With CJ_NUM,;
ABH_CODCLI With CJ_CLIENTE, ABH_DESCRI With 'ALARME',;
ABH_ENTREG With CJ_EMISSAO, ABH_REFER With CJ_EMISSAO,;
ABH_CODPRO With "BAT", ABH_SITUAC With "1"
dbUnLock()
return
Achei uma forma de fazer uma OS sem precisar utilizar diretamente a base instalada, vou utilizar o Projeto (ABH - TECA700) do Gestão de Serviços, acha uma boa?
Consegui utilizar o Reclock conforme abaixo, ele esta gerando um probjeto com os dados iniciais, com certeza minha maior dificuldade será utilizar o while para inserir os produtos, ainda mais pq precisarei abrir as quantidades. Segue fonte abaixo, estou utilizando um PE temporário, depois vou posicionar em um melhor.
User Function MT415EFT
Private _cNumPed := SCJ->CJ_NUM
dbSelectArea("SCJ")
DbSetOrder(1)
dbSeek(xFilial()+_cNumPed)
// Inclusão de Registro
RecLock("ABH",.T.)
Replace ABH_CODCLI With CJ_CLIENTE, ABH_LOJA With CJ_LOJA,;
ABH_FILIAL With CJ_FILIAL, ABH_PROJET With CJ_NUM,;
ABH_CODCLI With CJ_CLIENTE, ABH_DESCRI With 'ALARME',;
ABH_ENTREG With CJ_EMISSAO, ABH_REFER With CJ_EMISSAO,;
ABH_CODPRO With "BAT", ABH_SITUAC With "1"
dbUnLock()
return
Por favor Acessar ou Registrar para participar da conversa.
- mariotchak
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 59
- Obrigados Recebidos: 0
11 anos 9 meses atrás #9932
por mariotchak
Respondido por mariotchak no tópico Re: Field Service - Abertura OS
Completando a mensagem anterior, criei o while para inser os produtos mas da um erro dizendo que a variavel CK_item nao existe, segue parte do fonte abaixo. Será que o while esta correto?
DbSelectArea("SCK")
DbGoTop()
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
dbSelectArea("SCK")
RecLock("ABI",.T.)
Replace ABI_PROJET With "CK_NUM",;
ABI_ITEM With CK_ITEM, ABI_CODPRO With "PRODUTO"
dbUnLock()
ENDDO
DbSelectArea("SCK")
DbGoTop()
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
dbSelectArea("SCK")
RecLock("ABI",.T.)
Replace ABI_PROJET With "CK_NUM",;
ABI_ITEM With CK_ITEM, ABI_CODPRO With "PRODUTO"
dbUnLock()
ENDDO
Por favor Acessar ou Registrar para participar da conversa.
- mariotchak
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 59
- Obrigados Recebidos: 0
11 anos 9 meses atrás #9935
por mariotchak
Respondido por mariotchak no tópico Re: Field Service - Abertura OS
Briga feia, agora ele até consegue gravar a primeira linha mas na segunda da erro de indice exclusivo na tabela ABI
DbSelectArea("SCK")
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
RecLock("ABI",.T.)
Replace ABI_PROJET With SCK->CK_NUM,;
ABI_ITEM With SCK->CK_ITEM, ABI_CODPRO With "PRODUTO"
dbUnLock()
ENDDO
DbSelectArea("SCK")
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
RecLock("ABI",.T.)
Replace ABI_PROJET With SCK->CK_NUM,;
ABI_ITEM With SCK->CK_ITEM, ABI_CODPRO With "PRODUTO"
dbUnLock()
ENDDO
Por favor Acessar ou Registrar para participar da conversa.
- mariotchak
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 59
- Obrigados Recebidos: 0
11 anos 9 meses atrás #9967
por mariotchak
Respondido por mariotchak no tópico Re: Field Service - Abertura OS
Alguma ajuda?
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 9 meses atrás #9968
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: Field Service - Abertura OS
User Function Integra()
Local aArea := GetArea()
DbSelectArea("SCK")
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
If RecLock("ABI",.T.)
ABI->ABI_PROJET := SCK->CK_NUM
ABI->ABI_ITEM := SCK->CK_ITEM
ABI->ABI_CODPRO := SCK->CK_PRODUTO
MsUnlock()
Endif
SCK->(dbSkip(1))
Enddo
RestArea(aArea)
Return .t.
Local aArea := GetArea()
DbSelectArea("SCK")
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
If RecLock("ABI",.T.)
ABI->ABI_PROJET := SCK->CK_NUM
ABI->ABI_ITEM := SCK->CK_ITEM
ABI->ABI_CODPRO := SCK->CK_PRODUTO
MsUnlock()
Endif
SCK->(dbSkip(1))
Enddo
RestArea(aArea)
Return .t.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- mariotchak
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 59
- Obrigados Recebidos: 0
11 anos 9 meses atrás #9973
por mariotchak
Respondido por mariotchak no tópico Re: Field Service - Abertura OS
Luiz, deu certo no PE MT415EFT, porém preciso desse fonte em um botão na tela de orçamento de venda MATA415. para isso criei um fonte no PE MA415BUT, ate ai ok ele chama minha função de nomeie de INLCOS() porém nesta tela esta fonte que funcionava no PE M415EFT agora nao funciona mais, fala que nao pode gravar uma linha com indice exclusivo. Segue fontes abaixo, agradeço a ajuda.
Criar botão
#include "RWMAKE.CH"
User Function MA415BUT
Local aBotoes:={}
AAdd(aBotoes,{ "NOTE", {|| Processa({|| U_INCLOS()},"Dados do Pedido","Processando...") }, "Gera OS" } )
Return(aBotoes)
Gerar OS
#Include 'Protheus.ch'
User Function MT415EFT()
Local aArea := GetArea()
Private _cNumPed := SCJ->CJ_NUM // Numero do Orçamento
// Inclusão de Registro Inicial
dbSelectArea("SCJ")
DbSetOrder(1)
dbSeek(xFilial()+_cNumPed)
RecLock("ABH",.T.)
Replace ABH_CODCLI With CJ_CLIENTE, ABH_LOJA With CJ_LOJA,;
ABH_FILIAL With CJ_FILIAL, ABH_PROJET With CJ_NUM,;
ABH_CODCLI With CJ_CLIENTE, ABH_DESCRI With 'ALARME',;
ABH_ENTREG With CJ_EMISSAO, ABH_REFER With CJ_EMISSAO,;
ABH_CODPRO With "BAT", ABH_SITUAC With "1"
dbUnLock()
// Inclusão dos Itens do Orçamento
DbSelectArea("SCK")
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
If RecLock("ABI",.T.)
Replace ABI_PROJET With SCK->CK_NUM,;
ABI_ITEM With SCK->CK_ITEM, ABI_CODPRO With SCK->CK_PRODUTO,;
ABI_FILIAL With SCK->CK_FILIAL, ABI_ETAPA With SCK->CK_ITEM,;
ABI_DESCRI With 'AAAA', ABI_CODPRB With 'INST',;
ABI_INIPRV With dDATABASE, ABI_FIMPRV With dDATABASE,;
ABI_SITATU With '1'
MsUnLock()
Endif
SCK->(dbSkip(1))
ENDDO
RestArea(aArea)
return
Criar botão
#include "RWMAKE.CH"
User Function MA415BUT
Local aBotoes:={}
AAdd(aBotoes,{ "NOTE", {|| Processa({|| U_INCLOS()},"Dados do Pedido","Processando...") }, "Gera OS" } )
Return(aBotoes)
Gerar OS
#Include 'Protheus.ch'
User Function MT415EFT()
Local aArea := GetArea()
Private _cNumPed := SCJ->CJ_NUM // Numero do Orçamento
// Inclusão de Registro Inicial
dbSelectArea("SCJ")
DbSetOrder(1)
dbSeek(xFilial()+_cNumPed)
RecLock("ABH",.T.)
Replace ABH_CODCLI With CJ_CLIENTE, ABH_LOJA With CJ_LOJA,;
ABH_FILIAL With CJ_FILIAL, ABH_PROJET With CJ_NUM,;
ABH_CODCLI With CJ_CLIENTE, ABH_DESCRI With 'ALARME',;
ABH_ENTREG With CJ_EMISSAO, ABH_REFER With CJ_EMISSAO,;
ABH_CODPRO With "BAT", ABH_SITUAC With "1"
dbUnLock()
// Inclusão dos Itens do Orçamento
DbSelectArea("SCK")
DbSetOrder(1)
DbSeek(xFilial("SCK")+_cNumPed)
While !Eof() .And. SCK->CK_FILIAL = xFilial("SCK") .And. SCK->CK_NUM == _cNumPed
If RecLock("ABI",.T.)
Replace ABI_PROJET With SCK->CK_NUM,;
ABI_ITEM With SCK->CK_ITEM, ABI_CODPRO With SCK->CK_PRODUTO,;
ABI_FILIAL With SCK->CK_FILIAL, ABI_ETAPA With SCK->CK_ITEM,;
ABI_DESCRI With 'AAAA', ABI_CODPRB With 'INST',;
ABI_INIPRV With dDATABASE, ABI_FIMPRV With dDATABASE,;
ABI_SITATU With '1'
MsUnLock()
Endif
SCK->(dbSkip(1))
ENDDO
RestArea(aArea)
return
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Field Service - Abertura OS
Tempo para a criação da página:0.096 segundos