Protótipo de Tela
Programa GFEA050 - Validações Somente Para Ações do Botão Redespachantes - Incluir:
Todos os documentos de Carga no campo Tipo Frete, GW1_TPFRET do Romaneio de Carga, a serem selecionados na rotina Inclusão Redespachantes, serão listados após selecionados.
Incluir Consulta Padrão para consulta dos documentos de carga, poderá ser aproveitada a existente no programa GFEA044, conforme abaixo:
- Consultar por Tipo de Documento.
- Consultar por Data de Emissão Documento.
- Consultar por Número do Documento.
- Tela de Inclusão de Trechos em Lote:
O botão Redespachantes - Incluir, definirá o uso da rotina, onde apenas será inserido a Transportadora, sendo que o trecho pago virá como padrão 1-SIM. O usuário poderá modificar para 2-NÃO ou manter os trechos como pagos.
- GWU_CDTRP (Transportador);
- GWU_PAGAR (Frete Pago)
Programa GFEA050C - Validações Somente Para Ações do Botão Redespachantes - Incluir:
- Os registros apresentados no Zoom de transportadores será filtrado para trazer apenas as Transportadoras Redespachantes, identificados na tabela GU3 – Cadastro de Emitentes na pasta Transportador, no campo GU3_REDESP - Redespachantes.
- O campo GU3_REDESP - Redespachantes será para a identificação do Transportador como Redespachante, na pasta Transportador. Apenas os emitentes assinalados como Transportadores terão o campo habilitado para a seleção de Redespachantes.
- Incluir as validações do programa GFEA044 na linha 619 até 623, com as seguinte modificações:
If lRet.AND.nLine != nFirstLine.AND.FwFldGet("GWU_PAGAR",nLine) == "1"
If Posicione("GU3", 1, xFilial("GU3") + FwFldGet("GWU_CDTRP",nLine), "GU3_AUTON") == "1"
Help( ,, 'HELP',, STR0023, 1, 0,) //'Só é permitido incluir proprietário autônomo em trecho pago, quando for o primeiro trecho'
lRet := .F.
EndIf
- Incluir as validações do programa GFEA044 na linha com inicio 626 até 637:
If lRet
cTpDcSent := Posicione("GV5", 1, xFilial("GV5") + FwFldGet("GW1_CDTPDC"), "GV5_SENTID")
// Quando o Tipo do Documento for Entrada (1):
// - Tipo de Frete CIF, Pagar = Não (2)
// - Tipo de Frete FOB, Pagar = Sim (1)
If cTpDcSent == "1"
// CIF (1), Pagar deverá ser NÃO (1)
If FwFldGet("GW1_TPFRET") == "1".AND.FwFldGet("GWU_PAGAR", nLine) != "2"
Help( ,, 'HELP',, STR0024, 1, 0,) //'Para Tipo de Documentos no sentido Entrada e Frete CIF, o trecho não deve ser pago'
lRet := .F.
EndIf
- Incluir as validações do programa GFEA044 na linha com inicio 936 até 944:
/* Ordena a sequencia dos Trechos de Transporte */
For nI := 1 To oModelGWU:Length()
oModelGWU:GoLine( nI )
If !oModelGWU:IsDeleted()
//verifica se o trecho é da cidade do destinatario
If cCidDest == FwFldGet('GWU_NRCIDD', nI)
lCidDest := .T.
nCidDest := nI
EndIf
- Incluir as validações do programa GFEA044 na linha com inicio 961 até 978:
If GW1_SENTID == '2' // Doc Carga com sentido Saida
//Doc Carga Sentido Saida e CIF deve conter ao menos 1 trecho pago
If oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '12' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lCIFSaida := .T.
//Doc Carga Sentido Saida e FOB não deve ter trechos pagos
ElseIf oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '34' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lFOBSaida := .F.
EndIf
ElseIf GW1_SENTID == '1' // Doc Carga com sentido Entrada
// Doc Carga com sentido Entrada e CIF não deve ter trechos pagos
If oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '12' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lCIFEnt := .F.
// Doc Carga com sentido Entrada e FOB deve conter ao menos 1 trecho pago
ElseIf oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '34' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lFOBEnt := .T.
EndIf
EndIf
EndIf
Validações na Gravação
1- Usuário utiliza a consulta padrão ou digita código da Transportadora.
2- Frete Pago virá como padrão 1-Sim, usuário mantém ou modifica para 2-Não.
3- A sequência de trecho será definida automaticamente pela rotina, fará a identificação que se trata de um Redespacho através da validação 1 - Botão Incluir Lote.
4- Após clicar no botão Salvar, a rotina fará as seguintes Validações:
- Modificará o campo GWU_NRCIDD do Trecho anterior ao inserido com a cidade destino do cadastro de Emitente, Aba EndeçosTransportador Selecionado na inclusão;
- Modificará o campo GWU_NRCIDD do Trecho incluido com a cidade destino do Destinátario final para entrega (informação já definida na emissão da Nota Fiscal);
5- A regra de Validação 1, será feita a regra automática mudando o conteúdo do campo Tipo Frete (GW1_TPFRET), da seguinte forma:
- Tipo de Frete igual CIF, o sistema modificará automaticamente para CIF-Redespacho, GW1_TPFRET = '2';
- Tipo de Frete igual FOB, o sistema modificará automaticamente para FOB-Redepacho, GW1_TPFRET = '4';
- Tipo de Frete igual CONSIGNADO, o sistema modificará automaticamente para CONSIGNADO-Redepacho, GW1_TPFRET = '6'
Manterá as validações do Programa GFEA044 existentes para evitar inclusão de trechos que não estejam de acordo com os cadastros do sistema.
Confirmação de Inclusão em Lote no botão "Salvar", inserir a opção de Recalcular Romaneio "SIM" , "NÃO", se sim chama função de recalculo, apos termino retorna a tela de Romaneios de Carga;
Programa GFEA050C - Validações do Grid Inferior:
A rotina listará o Grid Inferior com o detalhe dos trechos e as funcionalidades serão exclusivas para o botão Redespachantes - Incluir, sendo que as modificações serão inseridas conforme abaixo:
- Não poderão ser realizadas modificações nos trechos de forma individual.
- Não poderão ser realizadas inclusões de forma individual.
- Serão listados os trechos referentes aos documentos selecionados para visualização.
Programa GFEA050C - Validações Redespachantes - Incluir e Alterar:
O programa deverá validar, antes de permitir a entrada na rotina a inclusão e alteração do redespachante:
- Se o documento de carga já está com a data de entrega do primeiro trecho informada.
- Se não está relacionado com documentos de frete, pré-fatura ou com cálculo de provisão relacionado em um lote de provisão contábil diferente de 1 - Não Enviado.
- Se a origem do Calculo do Romaneio for origem igual 1, identificado pelo campo GWF_ORIGEM == "1", que permite que somente fretes calculados sejam considerados.
O processo de inclusão deve considerar o status do Romaneio diferente de Encerrado.
- Reabertura do Romaneio – incluir pergunta no início da rotina e no final.
- Entrou na rotina pergunta – sim reabre entra na rotina, se não volta para tela do romaneio.
No final da rotina, perguntar se deseja liberar o romaneio:
- Se sim – mostra a data antiga e permite mudar data e hora de liberação do Romaneio.
- Se não – permanece com status emitido.
A validação constante no programa GFEA050, será mantida e será exclusiva para a Rotina Alteração em Lote e Alteração Individual dos Trechos no Grid Inferior:
- Constante nas linhas 3549 até 3586.
//Verifica se há Documentos de Carga(GW1) no qual o tipo de frete não é redespachante
If (cAliasQry)->(Eof())
Help( ,, 'HELP',, "No romaneio selecionado não existem documentos de carga que são do tipo CIF com Redespacho, FOB com Redespacho ou Consignado com Redespacho. ", 1, 0,)
Return .F.
EndIF
Programa GFEA050C - Validações do Grid Inferior:
A rotina de manutenção individual do Grid Inferior será exclusiva para a rotina Redespachantes - Alterar não sofrerá modificações nas validações já existentes, e as demais a serem inseridas conforme abaixo:
- Permitir alteração do campo Frete Pago, conforme edição padrão do campo.
GWU_PAGAR (Frete Pago)
- Incluir a opção de Exclusão de trechos, considerando as validações do programa GFEA044:
Incluir as validações das linhas 1016 a 1019 - If nSeq <= 1 .And. (FwFldGet("GW1_TPFRET") == "2" .Or. FwFldGet("GW1_TPFRET") == "4" .Or. FwFldGet("GW1_TPFRET") == "6")
Help( ,, 'HELP',, STR0029, 1, 0,) //'Deve ser informado mais de um trecho para tipo de frete CIF com Redespacho, FOB com Redespacho ou Consignado com Redespacho'
lRet := .F.
EndIf
- Incluir as validações do programa GFEA044 na linha 611 até 617 com as seguinte modificações:
If lRet.AND.nLine > nFirstLine
// Só permite alterar mais de um trecho se o frete for CIF c/ Redespacho (2), FOB c/ Redespacho (4), Consignado c/ Redespacho (6)
If FwFldGet("GW1_TPFRET") != "2".AND.FwFldGet("GW1_TPFRET") != "4".AND.FwFldGet("GW1_TPFRET") != "6"
Help( ,, 'HELP',, STR0022, 1, 0,) //'Só é permitido alterar mais de um trecho quando o tipo de frete for CIF com Redespacho, FOB com Redespacho ou Consignado com Redespacho'
lRet := .F.
EndIf
- Incluir as validações do programa GFEA044 na linha com inicio 626 até 637:
If lRet
cTpDcSent := Posicione("GV5", 1, xFilial("GV5") + FwFldGet("GW1_CDTPDC"), "GV5_SENTID")
// Quando o Tipo do Documento for Entrada (1):
// - Tipo de Frete CIF, Pagar = Não (2)
// - Tipo de Frete FOB, Pagar = Sim (1)
If cTpDcSent == "1"
// CIF (1), Pagar deverá ser NÃO (1)
If FwFldGet("GW1_TPFRET") == "1".AND.FwFldGet("GWU_PAGAR", nLine) != "2"
Help( ,, 'HELP',, STR0024, 1, 0,) //'Para Tipo de Documentos no sentido Entrada e Frete CIF, o trecho não deve ser pago'
lRet := .F.
EndIf
- Incluir as validações do programa GFEA044 na linha com inicio 936 até 944:
/* Ordena a sequencia dos Trechos de Transporte */
For nI := 1 To oModelGWU:Length()
oModelGWU:GoLine( nI )
If !oModelGWU:IsDeleted()
//verifica se o trecho é da cidade do destinatario
If cCidDest == FwFldGet('GWU_NRCIDD', nI)
lCidDest := .T.
nCidDest := nI
EndIf
- Incluir as validações do programa GFEA044 na linha com inicio 961 até 978:
If GW1_SENTID == '2' // Doc Carga com sentido Saida
//Doc Carga Sentido Saida e CIF deve conter ao menos 1 trecho pago
If oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '12' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lCIFSaida := .T.
//Doc Carga Sentido Saida e FOB não deve ter trechos pagos
ElseIf oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '34' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lFOBSaida := .F.
EndIf
ElseIf GW1_SENTID == '1' // Doc Carga com sentido Entrada
// Doc Carga com sentido Entrada e CIF não deve ter trechos pagos
If oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '12' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lCIFEnt := .F.
// Doc Carga com sentido Entrada e FOB deve conter ao menos 1 trecho pago
ElseIf oModel:GetValue('GFEA044_GW1','GW1_TPFRET') $ '34' .And. FwFldGet("GWU_PAGAR", nI) == '1'
lFOBEnt := .T.
EndIf
EndIf
EndIf