Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Deck of Cards
id2
Card
id10
labelIncluir

Utilizando um Orçamento Simplificado:

Sistema deve estar na versão 12.1.23 ou superior e o parâmetro MV_ORCSIMP deve estar ligado (1=Sim):

  1. Acesse a rotina Orçamento Simplificado (TECA745)
  2. Selecione a opção "Incluir"
    1. Caso o parâmetro MV_ORCPRC estiver ligado, é necessário informar uma Tabela de Precificação (TECA740E)

Utilizando uma Oportunidade de Venda:

  1. Acesse a rotina "Oportunidade de Venda" (FATA300) e selecione um registro no grid
  2. Acesse a opção "Alterar"
  3. Acesse a opção "Outras Ações" e "Proposta Comercial"
  4. Caso não exista, inclua uma Proposta Comercial. Caso exista, selecione uma Proposta Comercial e pressione "Alterar"
  5. Com a rotina "Proposta Comercial" aberta, selecione "Outras Ações" e "Atualiza Orçamento de Serviços"
    1. Caso o parâmetro MV_ORCPRC estiver ligado, é necessário informar uma Tabela de Precificação (TECA740E)

Utilizando uma Vistoria Técnica:

  1. Na rotina Vistoria Técnica (TECA270), incluir ou alterar um registro qualquer
  2. Selecione "Outras Ações" e "Atualiza Orçamento de Serviços"
    1. Caso o parâmetro MV_ORCPRC estiver ligado, é necessário informar uma Tabela de Precificação (TECA740E)
  3. OBS: O orçamento incluído via Vistoria precisa ser importado para um Orçamento Simplificado ou Proposta Comercial para se tornar um orçamento.
Card
id11
labelExcluir

Utilizando um Orçamento Simplificado:

Sistema deve estar na versão 12.1.23 ou superior e o parâmetro MV_ORCSIMP deve estar ligado (1=Sim):

  1. Acesse a rotina Orçamento Simplificado (TECA745)
  2. Selecione a opção "Excluir"

Utilizando uma Oportunidade de Venda:

  1. Acesse a rotina "Oportunidade de Venda" (FATA300) e selecione um registro no grid
  2. Acesse a opção "Alterar"
  3. Acesse a opção "Outras Ações" e "Proposta Comercial"
  4. Selecione uma Proposta Comercial e pressione "Alterar"
  5. Com a rotina "Proposta Comercial" aberta, selecione "Outras Ações" e "Remover Orçamento de Serviços"

Utilizando uma Vistoria Técnica:

  1. Na rotina Vistoria Técnica (TECA270), incluir ou alterar um registro qualquer
  2. Selecione "Outras Ações" e "Remover Orçamento de Serviços"
Card
id12
labelAlterar

Utilizando um Orçamento Simplificado:

Sistema deve estar na versão 12.1.23 ou superior e o parâmetro MV_ORCSIMP deve estar ligado (1=Sim):

  1. Acesse a rotina Orçamento Simplificado (TECA745)
  2. Selecione a opção "Alterar"

Utilizando uma Oportunidade de Venda:

  1. Acesse a rotina "Oportunidade de Venda" (FATA300) e selecione um registro no grid
  2. Acesse a opção "Alterar"
  3. Acesse a opção "Outras Ações" e "Proposta Comercial"
  4. Selecione uma Proposta Comercial e pressione "Alterar"
  5. Com a rotina "Proposta Comercial" aberta, selecione "Outras Ações" e "Atualiza Orçamento de Serviços"

Utilizando uma Vistoria Técnica:

  1. Na rotina Vistoria Técnica (TECA270), selecione "Alterar".
  2. Selecione "Outras Ações" e "Atualiza Orçamento de Serviços"
  3. OBS: O orçamento incluído via Vistoria precisa ser importado para um Orçamento Simplificado ou Proposta Comercial para se tornar um orçamento.
Card
id13
labelVisualizar

Utilizando um Orçamento Simplificado:

Sistema deve estar na versão 12.1.23 ou superior.

  1. Acesse a rotina Orçamento Simplificado (TECA745)
  2. Selecione a opção "Visualizar"

Utilizando uma Oportunidade de Venda:

  1. Acesse a rotina "Oportunidade de Venda" (FATA300) e selecione um registro no grid
  2. Acesse a opção "Visualizar"
  3. Acesse a opção "Outras Ações" e "Proposta Comercial"
  4. Selecione uma Proposta Comercial e pressione "Visualizar"
  5. Com a rotina "Proposta Comercial" aberta, selecione "Outras Ações" e "Visualizar Orçamento de Serviços"

Utilizando uma Vistoria Técnica:

  1. Na rotina Vistoria Técnica (TECA270), visualize um registro qualquer
  2. Selecione "Outras Ações" e "Visualizar Orçamento de Serviços"
Card
id14
labelAtivar / Inativar

Utilizando um Orçamento Simplificado:

Sistema deve estar na versão 12.1.23 ou superior.

  1. Acesse a rotina Orçamento Simplificado (TECA745)
  2. Selecione a opção "Ativar / Inativar"
Card
id15
labelPosicionar registro

Utilizando o Posicionar Registros:

Sistema deve estar na versão 12.1.23 ou superior.

Acesse a rotina Orçamento (TECA740)

  1. Selecione "Outras Ações" e "Posicionar"
  2. Selecione qual aba gostaria de posicionar e confirme. Após a confirmação, aparecerão os campos padrão e os campos criados pelo usuário.
  3. Preencha os campos e confirme.
    1. Se existirem as informações, será posicionado na linha.
    2. Se não existirem as informações, será exibida uma mensagem alertando o usuário que não foi possível posicionar na linha.


Card
id15
labelPosicionar registroArmamento e Uniforme

Abas Uniforme e Armamento:

As abas de uniforme e armamento possuem valores próprios e estão vinculadas ao orçamento somente quando o campo MV_ORCPRC está configurado como .F. Esses totais são incorporados ao valor da TFF, refletindo-se posteriormente no contrato. Vale observar que os itens de armamento e uniforme não geram linhas específicas nos contratos; ao invés disso, seus totais são incorporados diretamente ao posto.

Observação: A incorporação desses valores ao contrato ocorre quando o campo MV_ORCPRC está desabilitado.

Card
id16
labelExemplo de código

O código abaixo exemplifica a inclusão de um Orçamento de Serviços:


Bloco de código
titleExemplo
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'FWMVCDEF.CH'

//	Exemplo de ExecAuto Customizado, de Orçamento de Contrato de Serviço
//	Nos ARRAYs, informar o nome do campo e valor

//	Usar os Modelos abaixo, no FOR acima
//	'TFJ_REFER'.      	//	'Ref. Proposta'
//		GRID
//		'TFL_LOC'      	//	'Locais de Atendimento'
//		'TFF_RH'       	//	'Recursos Humanos'
//			SubGRID
//			'TFG_MI'    	//	'Materiais de Implantação'
//			'TFH_MC'    	//	'Material de Consumo'
//			'ABP_BENEF' 	//	'Benefícios'
//			'TFU_HE'    	//	'Hora Extra'
//		'TFI_LE'       	//	'Locação de Equipamentos'
//			SubGRID
//			'TEV_ADICIO'	//	'Cobrança da Locação'

User FunctIon Orc740()
	Local aLinha := {}
	Local aTFJ := {}	//	Campos do Cabeçalho
	Local aTFL := {}	//	Locais de Atendimento
	Local aTFF := {}	//	Recursos Humanos
	Local aTFG := {}	//	Material de Implantação
	Local aTFH := {}	//	Material de Consumo
	Local aABP := {}	//	Verbas Adicionais
	Local aTFU := {}	//	Hora Extra
	Local aTFI := {}	//	Locação de Equipamentos
	Local aTEV := {}	//	Cobrança de Locação
	Local nDtIni := dDataBase
	Local nDtFim := dDataBase + 30

	//	Cabeçalho
	aAdd(aTFJ, {"TFJ_FILIAL", xFilial("TFJ")})
	aAdd(aTFJ, {"TFJ_CODIGO", GETSXENUM("TFJ", "TFJ_CODIGO")})
	aAdd(aTFJ, {"TFJ_CODENT", "000001"})
	aAdd(aTFJ, {"TFJ_LOJA"  , "01"})
	aAdd(aTFJ, {"TFJ_CONDPG", "001"})

	//	Locais de Atendimento
	aAdd(aTFL  ,  "TFL_LOC")
	aAdd(aLinha, {"TFL_FILIAL", xFilial("TFL")})
	aAdd(aLinha, {"TFL_LOCAL" , "00000014"})
	aAdd(aLinha, {"TFL_DTINI" , nDtIni})
	aAdd(aLinha, {"TFL_DTFIM" , nDtFim})
	aAdd(aTFL  , aLinha)
	aLinha := {}

	//	Recursos Humanos
	aAdd(aTFF  ,  "TFF_RH")
	aAdd(aLinha, {"TFF_FILIAL", xFilial("TFF")})
	aAdd(aLinha, {"TFF_ITEM"  , "01"})
	aAdd(aLinha, {"TFF_PRODUT", "000000000000001"})
	aAdd(aLinha, {"TFF_QTDVEN", 10})
	aAdd(aLinha, {"TFF_PRCVEN", 1000})
	aAdd(aLinha, {"TFF_PERINI", nDtIni})
	aAdd(aLinha, {"TFF_PERFIM", nDtFim})
	aAdd(aLinha, {"TFF_TESPED", "502"})
	aAdd(aLinha, {"TFF_FUNCAO", "00001"})
	aAdd(aLinha, {"TFF_TURNO" , "001"})
	aAdd(aLinha, {"TFF_SEQTRN", "01"})
	aAdd(aLinha, {"TFF_ESCALA", "000002"})
	aAdd(aTFF  , aLinha)
	aLinha := {}

	//	Materiais de Implantação
	aAdd(aTFG  ,  "TFG_MI")
	aAdd(aLinha, {"TFG_FILIAL", xFilial("TFG")})
	aAdd(aLinha, {"TFG_ITEM"  , "01"})
	aAdd(aLinha, {"TFG_PRODUT", "000000000000003"})
	aAdd(aLinha, {"TFG_QTDVEN", 1})
	aAdd(aLinha, {"TFG_PRCVEN", 100})
	aAdd(aLinha, {"TFG_PERINI", nDtIni})
	aAdd(aLinha, {"TFG_PERFIM", nDtFim})
	aAdd(aLinha, {"TFG_TESPED", "501"})
	aAdd(aTFG  , aLinha)
	aLinha := {}

	//	Materiais de Consumo
	aAdd(aTFH  ,  "TFH_MC")
	aAdd(aLinha, {"TFH_FILIAL", xFilial("TFH")})
	aAdd(aLinha, {"TFH_ITEM"  , "01"})
	aAdd(aLinha, {"TFH_PRODUT", "000000000000004"})
	aAdd(aLinha, {"TFH_QTDVEN", 1})
	aAdd(aLinha, {"TFH_PRCVEN", 100})
	aAdd(aLinha, {"TFH_PERINI", nDtIni})
	aAdd(aLinha, {"TFH_PERFIM", nDtFim})
	aAdd(aLinha, {"TFH_TESPED", "501"})
	aAdd(aTFH  , aLinha)
	aLinha := {}

	MsgRun("Orçamento", "Processando", {|| U_Exec740(aTFJ, {aTFL, aTFF, aTFG, aTFH, aABP, aTFU, aTFI, aTEV})})

Return

//*************************************************************
//	ExecAuto Customizado
User Function Exec740(aOrca, aModelos)
	Local aLinha := {}
	Local aGrid := {}
	Local cCampo := ""
	Local cMsg := ""
	Local lRet := .T.
	Local nGrd := 0
	Local nLin := 0
	Local nMod := 0
	Local oModel
	Local oModAux
	Local xValor

	If SuperGetMV('MV_ORCPRC')
		oModel := FwLoadModel("TECA740F")	//	Orçamento com precificação
	Else
		oModel := FwLoadModel("TECA740") 	//	Orçamento sem precificação
	Endif
	oModel:SetOperation(MODEL_OPERATION_INSERT)
	oModel:Activate()

	//	Cabeçalho
	oModAux := oModel:GetModel("TFJ_REFER")
	For nMod := 1 To Len(aOrca)
		cCampo := aOrca[nMod, 1]
		xValor := aOrca[nMod, 2]
		lRet := oModAux:SetValue(cCampo, xValor)
		If !lRet
			Exit
		Endif
	Next

	//	Grids
	If lRet .And. !Empty(aModelos)
		For nMod := 1 To Len(aModelos)
			aGrid := aClone(aModelos[nMod])
			If !Empty(aGrid)
				oModAux := oModel:GetModel(aGrid[1])	//	Nome do Modelo
				For nGrd := 2 To Len(aGrid)	//	Registros do Modelo
					If nGrd > 2
						oModAux:AddLine()
					Endif
					aLinha := aClone(aGrid[nGrd])	//	Campos do Modelo
					For nLin := 1 To Len(aLinha)
						cCampo := aLinha[nLin, 1]
						If FwFldGet(cCampo) == Nil
							MsgAlert("O Campo " + cCampo + ' não existe no Modelo ' + aGrid[1], "Erro")
							lRet := .F.
						Else
							xValor := aLinha[nLin, 2]
							lRet := oModAux:SetValue(cCampo, xValor)
						Endif
						If lRet .And. nLin == Len(aLinha)
							aLinha := oModel:GetRelation(aGrid[1])[1]	//	Campos de Relacionamento
							For nLin := 2 To Len(aLinha)
								cCampo := aLinha[nLin, 2]	//	Campo Pai
								xValor := FwFldGet(cCampo)
								cCampo := aLinha[nLin, 1]	//	Campo Filho
								If Empty(FwFldGet(cCampo))
									lRet := oModAux:LoadValue(cCampo, xValor)
								Endif
								If !lRet
									nGrd := Len(aGrid)
									nMod := Len(aModelos)
									Exit
								Endif
							Next
							Exit
						Endif
					Next
				Next
			Endif
		Next
	Endif

	At740SCmt(.T.)
	lRet := lRet .And. oModel:VldData()
	lRet := lRet .And. oModel:CommitData()

	If !lRet
		aLinha := oModel:GetErrorMessage()
		For nLin := 1 To Len(aLinha)
			If !Empty(aLinha[nLin])
				cMsg += aLinha[nLin] + CRLF
			Endif
		Next
		MsgAlert(cMsg, "Erro")
	Else
		MsgAlert("Orçamento Gravado com Sucesso", " ")
	Endif

Return lRet

...