Mas deu o seguinte erro que não estou conseguindo identificar qual o problema realmente por de tras
Bom dia,
Voce poderia adicionar o trecho do método de incremento, ou você não faz esse tratamento no teu fonte?
@akumanodriver234 , bom dia.
Me passe onde vc está chamando o addincrementField e como está o seu menu chamando a cópia?
A Copia tem que está assim no menu.
ADD OPTION aRotina TITLE 'Copiar' ACTION 'VIEWDEF.User_Function' OPERATION 9 ACCESS 0
obrigada mas surgiu outro problema ta copiando mas os itens da promoção estão sendo duplicado tanto na original quanto da copia minha duvida é normal a funcao copia e duplicar itens ou nao
Boa tarde, compartilha o fonte pra ser mais preciso na ajuda.
User Function PROMDOMA()
Local oBrowse
//If !FWIsAdmin(__cUserID)
// MsgAlert("Rotina Restrita à Administradores!", "Atenção")
// Return()M410PVNF
//EndIf
Private cCadastro := OemToAnsi("Cadastro de Promoções - DOMA")
Private aRotina := MenuSZH()
oBrowse := FWMBrowse():New()
oBrowse:SetAlias("SZH")
oBrowse:AddLegend("SZH->ZH_STATUS == '1'", "GREEN", "Em Vigêcia") // Legenda
oBrowse:AddLegend("SZH->ZH_STATUS == '2'", "RED" , "Encerrada Automaticamente") // Legenda
oBrowse:AddLegend("SZH->ZH_STATUS == '3'", "RED" , "Cancelada") // Legenda
oBrowse:AddLegend("SZH->ZH_STATUS == '4'", "RED" , "Encerrada Manualmente") // Legenda
oBrowse:AddLegend("SZH->ZH_STATUS == '5'", "RED" , "Encerrada por Dt Validade") // Legenda
oBrowse:SetDescription(cCadastro)
oBrowse:Activate()
Return()
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ ModelDef º Autor ³ Lucas Lott º Data ³ 15/10/2020 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Modelo º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ PROMDOMA º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ModelDef()
Local oModel := Nil
Local oStPai := FWFormStruct(1, "SZH")
Local oStFilho := FWFormStruct(1, "SZI")
Local aSZIRel := {}
//Definições dos campos
oStPai:SetProperty("ZH_DATAINI" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_DATAINI() .AND. U_VldCabZH()" )) //VALIDAÇÃO DO CAMPO
oStPai:SetProperty("ZH_DATAFIM" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_DATAINI() .AND. U_VldCabZH()" )) //VALIDAÇÃO DO CAMPO
oStPai:SetProperty("ZH_TIPOPRO" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_VldCabZH()" )) //VALIDAÇÃO DO CAMPO
oStPai:SetProperty("ZH_STATUS" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_PROMOK()" )) //VALIDAÇÃO DO CAMPO
// validações para concatenar o nome da promoção
oStPai:SetProperty("ZH_TIPOPRO" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_VldCabZH()")) //VALIDAÇÃO DO CAMPO
oStPai:SetProperty("ZH_TABPRC" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_VldCabZH()")) //VALIDAÇÃO DO CAMPO
// fim das valições para concatenar nome da promoção
//oStPai:SetProperty("ZI_" , MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_VldCabZH()")) //VALIDAÇÃO DO CAMPO
oStFilho:SetProperty("ZI_ITEM" , MODEL_FIELD_INIT , FwBuildFeature(STRUCT_FEATURE_INIPAD, "U_INITEMZI()"))//inicializador padrão
//oStFilho:SetProperty("ZI_CODPROD", MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_EXTPROM(M->ZI_CODPROD, M->ZH_TABPRC)")) //VALIDAÇÃO DO CAMPO
oStFilho:SetProperty("ZI_CODPROD", MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_EXTPROM(M->ZI_CODPROD, M->ZH_TABPRC) .and. U_RetPr()")) //VALIDAÇÃO DO CAMPO
oStFilho:SetProperty("ZI_DTVALID", MODEL_FIELD_VALID, FwBuildFeature(STRUCT_FEATURE_VALID , "U_DiasProm(.T.,,M->ZI_CODPROD,M->ZI_DTVALID)")) //VALIDAÇÃO DO CAMPO
// TudoOkZH static function chamada na validação total do formulário
oModel := MPFormModel():New("MODELSZH", , {|oModel| TudoOkZH(oModel)})
oModel:AddFields("SZHMASTER", , oStPai,,)
oModel:AddGrid("SZIDETAIL", "SZHMASTER", oStFilho,/*bLinePre*/, {|oModelGrid| LinOk(oModelGrid)}/*VALIDAÇÃO DA LINHA*/,,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/)
//Fazendo relacionamento entre pai e filho
aAdd(aSZIRel, {"ZI_FILIAL" , "ZH_FILIAL"})
aAdd(aSZIRel, {"ZI_CODPROM", "ZH_CODIGO"})
oModel:SetRelation("SZIDETAIL", aSZIRel, SZI->(IndexKey(1)))
oModel:SetPrimaryKey({})
oModel:SetDescription("Cadastro de Promoções - DOMA")
oModel:GetModel("SZHMASTER"):SetDescription("Cadastro")
oModel:GetModel("SZIDETAIL"):SetDescription("Produtos")
Return(oModel)
*******************
User Function RetPr() // função para ser acionada após digitação do ZI_CODPROD
*******************
Local cDsc as character
Local oModel as object
Local cProd as character
Local oModelGrid as object
oModel:= FwModelActive() // Define oModel
oModelGrid := oModel:getModel("SZIDETAIL") // Pega o modelo do grid com base no modelo ativo
cProd := oModelGrid:GetValue("ZI_CODPROD") // Pega o código digitado no grid
cDsc := RetTpProm(M->ZH_TIPOPRO, cProd) // chama a função para pegar a descrição
/If !Empty(DTOC(M->ZH_DATAINI))
cDsc += " - DE " + DTOC(M->ZH_DATAINI)
EndIf/
If !Empty(DTOC(M->ZH_DATAINI)) .AND. DTOC(M->ZH_DATAINI) != " / / "
cDsc += " - DE " + DTOC(M->ZH_DATAINI)
If !Empty(M->ZH_DATAFIM) .AND. DTOC(M->ZH_DATAFIM) != " / / "
cDsc += " ATÉ " + DTOC(M->ZH_DATAFIM)
EndIf
Else
If !Empty(M->ZH_DATAFIM) .AND. DTOC(M->ZH_DATAFIM) != " / / "
cDsc := "DE " + DTOC(M->ZH_DATAINI)
EndIf
EndIf
oModel:SetValue(“SZHMASTER”, “ZH_DESCRI”, cDsc) // Atualiza ZH_DESCRI
return .T.
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ ViewDef º Autor ³ Lucas Lott º Data ³ 15/10/2020 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ View º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ PROMDOMA º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ViewDef()
Local oView := Nil
Local oModel := FWLoadModel("PROMDOMA")
Local oStPai := FWFormStruct(2, "SZH")
Local oStFilho := FWFormStruct(2, "SZI")
Local aOpc := {MODEL_OPERATION_INSERT,MODEL_OPERATION_UPDATE} //Array UniDimencional contendo em que tipo de op. o botão fica visivel
If !FWIsAdmin(__cUserID)
MsgAlert("Rotina Restrita à Administradores!", "Atenção")
Return()
EndIf
oView := FWFormView():New()
oView:AddUserButton("Importar Produtos" , "MAGIC_BMP", {|oModelGrid| U_IMPPROD(oModelGrid) }, "Importar Produtos", , aOpc, .F.)
oView:AddUserButton("Calc. Margem" , "MAGIC_BMP", {|oModelGrid| CALCMARG(oModelGrid, M->ZH_TABPRC) }, "Calcular Margem" , , aOpc, .T.)
oView:AddUserButton("Import. Marcas" , "MAGIC_BMP", {|oModelGrid| ImportMarc(oModelGrid, M->ZH_TABPRC) }, "Import. Marcas" , , aOpc, .F.)
oView:AddUserButton("Import. Monit." , "MAGIC_BMP", {|oModelGrid| ImportMont(oModelGrid) }, "Import. Monit." , , aOpc, .F.)
oView:AddUserButton("Consulta Promoção" , "MAGIC_BMP", {|oModelGrid| ConsultProm(M->ZH_TABPRC, oModelGrid) }, "Consulta Promoção", , , .F.)
oView:AddUserButton("Cons. Item Promoção", "MAGIC_BMP", {|oModelGrid| ConsultProm(M->ZH_TABPRC, oModelGrid, .T.)}, "Consulta Promoção", , , .F.)
oView:AddUserButton("Exp. Grid", "MAGIC_BMP", {|oModelGrid| prencheGrid()}, "Exp. Grid", , , .F.)
oView:AddUserButton("Atulizar Valid. Dias", "MAGIC_BMP", {|oModelGrid| AttValDias()}, "Exp. Grid", , , .F.)
oView:SetModel(oModel)
oView:AddField("VIEW_SZH", oStPai , "SZHMASTER")
oView:AddGrid("VIEW_SZI" , oStFilho, "SZIDETAIL")
oView:CreateHorizontalBox("CABEC", 25)
oView:CreateHorizontalBox("GRID" , 75)
oView:SetOwnerView("VIEW_SZH", "CABEC")
oView:SetOwnerView("VIEW_SZI", "GRID" )
Return(oView)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ MenuSZH º Autor ³ Lucas Lott º Data ³ 15/10/2020 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Menu Funcional º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ PROMDOMA º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function MenuSZH()
Private aRotina := {}
//Adicionando opções
ADD OPTION aRotina TITLE 'Visualizar' ACTION 'VIEWDEF.PROMDOMA' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
ADD OPTION aRotina TITLE 'Incluir' ACTION 'VIEWDEF.PROMDOMA' OPERATION MODEL_OPERATION_INSERT ACCESS 0 //OPERATION 3
ADD OPTION aRotina TITLE 'Alterar' ACTION 'VIEWDEF.PROMDOMA' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 //OPERATION 4
ADD OPTION aRotina TITLE 'Excluir' ACTION 'VIEWDEF.PROMDOMA' OPERATION MODEL_OPERATION_DELETE ACCESS 0 //OPERATION 5
ADD OPTION aRotina TITLE 'Rel. Prom.' ACTION 'U_RelProm()' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
//ADD OPTION aRotina TITLE 'Rel. Analitico' ACTION 'U_PromVend()' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
ADD OPTION aRotina TITLE 'Result. da Promoção' ACTION 'U_CONSPRO("A")' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
ADD OPTION aRotina TITLE 'Result. Geral Prom.' ACTION 'U_CONSPRO("B")' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
ADD OPTION aRotina TITLE 'Exportar Excel.' ACTION 'U_EXPPROM()' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
Return(aRotina)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ CODSZH º Autor ³ Lucas Lott º Data ³ 15/10/2020 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Inicializador Padrão Código da Promoção º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ PROMDOMA º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function CODSZH()
Local aArea := GetArea()
Local cRet := ""
Local cSQL := ""
cSQL := " SELECT MAX(ZH_CODIGO) ZH_CODIGO "
cSQL += " FROM " + RetSqlName("SZH")
cSQL := ChangeQuery(cSQL)
TCQUERY cSQL NEW ALIAS "QRYSZH"
DbSelectArea("QRYSZH")
QRYSZH->(DbGoTop())
While !EOF()
cRet := QRYSZH->ZH_CODIGO
DbSkip()
EndDo
QRYSZH->(DbCloseArea())
If cRet == " "
cRet := "000001"
Else
cRet := STRZERO(VAL(cRet) + 1, 6)
EndIf
RestArea(aArea)
Return(cRet)