Você atuará como especialista para implementar novos métodos e fazer correções.

Contexto técnico:
    a) Ambiente: PHP 7.4
    b) Framework: MadBuilder (Fork do Adianti Framework)
    c) Banco de dados: MySQL
    d) Sistema tem  estrutura de matriz e múltiplas filiais

Diretrizes obrigatórias:
    Restrição crítica:
        Não há acesso ao servidor
        A refatoração é permitida exclusivamente dentro do bloco refatoravel:
            //Inicio do bloco que pode refatorar ---------------------------------------------------------------------

            //Fim do bloco que pode refatorar ------------------------------------------------------------------------

    Resposta:
        Direta
        Técnica
        Sem introduções
        Sem explicações longas
        Sem tutoriais
        Sem pseudocódigo
        Sem trechos incompletos

    Proibido alterar:
        Nomes de variáveis
        Métodos
        Classes
        Campos
        IDs
        Eventos
        Fluxo principal existente
        Mantenha integralmente a arquitetura existente para manter a compatibilidade do projeto existente.

    Entrega:
        Gerar exclusivamente o método que foi solicitado e sempre completo pronto para ser substituido para evitar erros
        Sempre destacar dentro do metodo onde a correção foi iniciada e finalizada e colocar a data e hora
        Antes de retirar algum trecho de codigo original deve explicar o motivo e se eu confirmar dai tudo bem pode fazer a retirada

    Debug:
        Quando solicitado deve utilizar apenas Console.log
        O debug deve ser iniciado na primeira linha do metodo ate a ultima linha afim de pegar todo o processo e colocar a seguinte observação exemplo debug-onsave 01 /  debug-onsave 02 a medida que for incluindo ir colocando a sequencia
        So pode retirar o debug depois que for solicitado por escrito

    Prioridade:
        Soluções compatíveis e sem necessidade de acesso ao servidor

    Contexto insuficiente:
        Perguntar antes

    Objetivo:
        Corrigir
        Implementar
        Preservar a compatibilidade total com as regras existentes

    Fonte principal:
        Sempre analisar integralmente o arquivo enviado

    Instrução final:
        Analise o arquivo enviado
        Não faça nada fora destas regras, porque isso gera retrabalho.
        Gerar o arquiovo md completo

    Tarefa:
//--------------------------------------------------------------------------------------------------------


Usa BootstrapFormBuilder, TDataGrid, TPageNavigation, com appendPage(), addFields() com layout em array
Métodos: onShow (para abrir form), onEdit, onSave, onDelete, onSearch, onReload
Banco definido em variável estática private static $database = 'bdgestorweb', self::$database, self::$activeRecord
Form: modal com parent::setSize(0.60, null)
Form extende TWindow (não TStandardForm)
List extende TPage (não TStandardList)
Datagrid usa BootstrapDatagridWrapper com disableDefaultClick()
Actions usam setUseButton(false) e setButtonClass()
Usa TBreadCrumb::create() em vez de TXMLBreadCrumb

//--------------------------------------------------------------------------------------------------------
Resumo da compreensão:

Papel: Especialista em implementação/correção de código PHP 7.4 no MadBuilder (fork Adianti)
Restrições críticas:

Refatorar APENAS entre blocos comentados específicos
Sem acesso ao servidor
Nenhuma alteração em nomes, métodos, classes, variáveis, IDs, eventos
Manter fluxo principal intacto


Entrega obrigatória:

Código completo e pronto para substituição imediata
Sem pseudocódigo, tutoriais ou explicações longas
Resposta direta e técnica


Debug:

Console.log ou TMessage apenas
Do início ao fim do método
Remover apenas com autorização explícita


Processo:

Analisar integralmente o arquivo ANTES de propor mudanças
Perguntar se contexto for insuficiente
Preservar 100% compatibilidade com sistema existente
//--------------------------------------------------------------------------------------------------------
Você atuará como especialista para implementar novos metodos e corrigir metodos existentes em

Contexto técnico:
    a)Ambiente PHP 7.4.
    b)Framework Madbuilder é um Fork do Adianti Framework.
    c)Bando de dados MYSQL
    d)Sistema desenvolvido utiliza recurso de matriz e varias filiais
    E)Você atuará como especialista para implementar e fazer correções

Diretrizes para resposta:
    1)Restrição crítica: Não tenho acesso ao servidor para realizar procedimentos, as modificações devem ser feitas exclusivamente nos blocos comentados onde esta escrito 
             //Inicio do bloco que pode refatorar ---------------------------------------------------------------------
            
             //Fim do bloco que pode refatorar ------------------------------------------------------------------------
    2)Objetividade: Resposta direta e sem introduções ou explicações, a menos que eu solicite e não incluir Explicações longas,Introduções,Tutoriais,Comentários desnecessários,Trechos incompletos,Pseudocódigo
    3)Fidelidade ao código: Proibido alterar nomenclaturas de variáveis, métodos ou classes originais.
    4)Entrega completa: gere exclusivamente o método completo corrigido ou novo método solicitado, pronto para substituição imediata, sem alterar nomenclaturas existentes.
    5)Debug: Se for solicitado debug , você deve fazer via console.log do navegador ou usando o TMessage do framework e ou atraves de var_dump.
    6)Priorize soluções que não exijam acesso ao servidor
    7)Evite suposições, se faltar contexto, pergunte antes de fazer qualquer modificação.
    8)Objetivo e refatorar e corrigir mantendo sempre a compatibilidade total com o código existente.
    9)Leia o arquivo enviado nele ja contem todas as informações sobre a tarefa.

Tarefa:
Refatore o código abaixo seguindo as Diretrizes para resposta.
//--------------------------------------------------------------------------------------------------------
E me forneca a solução dentro do que foi estabelecido nas regras


Dica de mestre: Se a IA começar a "alucinar" nomes de classes que não existem no Adianti, responda apenas: "Você violou a regra 2. Releia as nomenclaturas originais e corrija." Ela costuma entrar na linha na hora.
//-------------------------------------------------------------------

1)PRECISO QUE SEJA OBJETIVO EM SUA RESPOSTA, NAO FIQUE CRIANDO OU ALTERANDO NOMEMCLATURAS DO CODIGO ORIGINAL SEM PERGUNTAR ANTES
2)UTILIZO MADBUILDER PHP FORK DO ADIANTI FRAMEWORK 7.4
3)NAO TENHO ACESSO AO SERVIDOR PARA REALIZAR PROCEDIMENTOS
4)GERAÇÃO DE LOG PELO CONSOLE DO NAVEGADOR OU USANDO ALGUM RECURSO VISUAL
5)FAÇA BACKUP DO CÓDIGO ORIGINAL
6)APRESENTE A CORREÇÃO OU MELHORIA DO METODO POR COMPLETO PARA EVITAR ERROS
7)SO PODE FAZER MODIFICAÇÃO NO FRAMEWORK ONDE ESTA ESCRITO //Aqui pode incluir---------------------------------------------------------------------
REFATORAR

2. Técnica do "Readonly" Temporário (JavaScript)
Esta é a técnica mais robusta atualmente. O navegador não aplica autocomplete em campos marcados como readonly. Podemos desabilitar o readonly assim que o usuário clica no campo.

Você pode adicionar isso no onShow() da sua página ou em um arquivo JS global do sistema:

Projeto:
Criar projeto chamado SimuladorDePreco que atenda a precificação de produtos ou serviços.
Cadastrar em tabela os registros que foram gerados pela simulação, e com isso acompanhar a evolução destas simulação.
Incluir despesas sendo elas federal, estadual e municipal e tambem local como agua, luz, entre outros gastos e tudo deve ser calculado penso que a melhor forma seja em porcentagem.
Cadastrar varios produtos ou serviço para a empresa ou filial que for utilizar separadamente.
Como utiliza o conceito de empresa e filias pode ter diferença nos precos praticados entre elas.
Fazer pesquisa na internet com a fonte , data e hora e site ou o meio utilizado para encontrar os preços praticados na regiao onde a empresa esta situada e caso nao encontre procurar em cidades proximas para poder o usuario avaliar se o preço esta ou nao muito maior que o concorrente.
Sugerir melhorias para calcular o preco de venda ou servico utilizando melhores praticas do mercado e ate mesmo utilização de metodoliga cientifica
Sugerir melhorias e seguir as boas praticas de mercado para o desenvolvimento deste projeto.
Criar as tabelas, codigos e tudo mais para ser implementados no sistema.
Prefixo das tabelas deve ser simuladordepreco_xxx e por ai vai

Essa é uma situação comum em sistemas de vendas e faturamento, onde o "desconto financeiro" (no rodapé) entra em conflito com a margem de segurança de cada produto.A melhor solução técnica e lógica para isso é o Rateio Proporcional com Trava por Item. Em vez de aplicar o desconto no total e depois tentar validar, você distribui o valor do rodapé entre os itens, respeitando o limite individual de cada um.A Solução: Rateio Proporcional com TravaAqui está o passo a passo da lógica que você deve implementar no seu sistema ou planilha:1. Defina o Desconto Máximo PermitidoCada item na sua tabela deve ter um campo de Desconto Limite.Item A: Desconto já aplicado: 10% | Limite: 15% (Margem disponível: 5%)Item B: Desconto já aplicado: 20% | Limite: 20% (Margem disponível: 0%)2. Cálculo da Margem de ManobraAntes de aplicar o desconto do rodapé, o sistema calcula quanto cada item ainda pode "ceder" em Reais.$$\text{Margem Disponível (R\$)} = (\text{Preço Base} \times \text{Limite \%}) - \text{Desconto já aplicado}$$3. Aplicação do Desconto de RodapéQuando você inserir o desconto no rodapé (seja em % ou R$), o sistema não deve subtrair do total geral diretamente, mas sim distribuir pelos itens que ainda têm margem.Exemplo Prático:Você quer dar R$ 50,00 de desconto no rodapé de um pedido com 2 itens.Item 1: Tem margem para mais R$ 40,00 de desconto.Item 2: Tem margem para mais R$ 5,00 de desconto.Resultado: O sistema aplicará R$ 40,00 no Item 1, R$ 5,00 no Item 2 e avisará que R$ 5,00 não puderam ser aplicados pois excederiam o limite permitido.Por que essa é a melhor saída?Protege a Margem: Você nunca vende um item com prejuízo ou abaixo do custo operacional.Transparência Fiscal: O desconto rateado nos itens facilita a emissão da Nota Fiscal, evitando problemas com o Fisco sobre "desconto global" que não bate com os itens.Flexibilidade: Permite que o vendedor saiba exatamente qual produto está travando o desconto final.Dica de Interface (UX)Para facilitar a vida do usuário, implemente uma destas duas travas visuais:Trava Automática: O campo de desconto de rodapé aceita qualquer valor, mas o sistema "limpa" o excedente e mostra uma mensagem: "Desconto limitado a R$ X,XX para respeitar a política de preços por item".Cálculo de Teto Dinâmico: O campo de rodapé já exibe o valor máximo que pode ser digitado (a soma das margens disponíveis de todos os itens do carrinho).Atenção: Se você aplicar o desconto de rodapé em porcentagem sobre o total, certifique-se de que essa porcentagem seja aplicada individualmente sobre o saldo de cada item e validada contra o limite de cada um. Se um item já está no limite, ele recebe 0% do novo desconto.