Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[14.0][IMP] l10n_br_account_withholding: handling of partner_id assignment #3181

Open
wants to merge 1 commit into
base: 14.0
Choose a base branch
from

Conversation

kaynnan
Copy link
Contributor

@kaynnan kaynnan commented Jul 15, 2024

cc @marcelsavegnago @douglascstd @WesleyOliveira98 @Matthwhy

Esta PR introduz a lógica para determinar o partner_id com base no campo cidade do ISSQN. Quando a cidade do ISSQN está especificada na linha de itens da fatura, o partner_id é definido pelo partner_wh_id associado a essa cidade no modelo res.city, permitindo identificar entidades como a Prefeitura de São Paulo. Antes de atribuir o partner_id, valida-se se há um partner_wh_id definido para a cidade no modelo res.city. Caso não haja, o partner_id é obtido através do l10n_br_fiscal.tax.group. Se a cidade do ISSQN não estiver preenchida na linha de itens da fatura, o partner_id é obtido com base na cidade do Parceiro da fatura de retenção.

@OCA-git-bot
Copy link
Contributor

Hi @marcelsavegnago, @renatonlima,
some modules you are maintaining are being modified, check this out!

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch 2 times, most recently from ea2b75c to f8c3192 Compare July 15, 2024 14:03
@marcelsavegnago
Copy link
Sponsor Member

marcelsavegnago commented Jul 15, 2024

@rvalyi @antoniospneto @renatonlima .. Para esta questão estamos criando um campo em res.city para informar o parceiro de retenção. Se por acaso ter este dado na cidade ou até mesmo no estado e pais for algo seja valido deixar direto no fiscal, podemos implementar lah... mas por ora estamos implementando pelo modulo wh.

Falo disso porque hoje no fiscal existe o campo partner wh no fiscal group. O que tbm podemos retirar no fiscal e mover para o modulo wh.

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from f8c3192 to a39bdc5 Compare July 15, 2024 14:13
@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch 2 times, most recently from c79e222 to 4565721 Compare July 15, 2024 20:26
Copy link
Sponsor Contributor

@antoniospneto antoniospneto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revisão técnica apenas, mas me parece tudo ok

@marcelsavegnago
Copy link
Sponsor Member

@Matthwhy faça uma revisão funcional e evidencie aqui por favor

@antoniospneto
Copy link
Sponsor Contributor

@marcelsavegnago será que não é interessante já aproveitar e exibir no modelo do parceiro, a relação com a cidade do imposto retido? já que essa relação já vai existir no banco de dados

@marcelsavegnago
Copy link
Sponsor Member

@marcelsavegnago será que não é interessante já aproveitar e exibir no modelo do parceiro, a relação com a cidade do imposto retido? já que essa relação já vai existir no banco de dados

Vc fala por exemplo, no cadastro da prefeitura aparecer as cidades que ele é parceiro de imposto retido ?

@douglascstd
Copy link
Member

a relação com a cidade do imposto

Olá Neto, não sei se faz sentido cadastrar uma lista de municípios e/ou parceiros em um parceiro, pois não é limitado no momento do cadastro. E pode criar uma restrição na necessidade de outros cadastros.

A proposta desta PR é incluir um parceiro vinculado ao município (res.city), pois quando o tomador seleciona o município em que o serviço foi executado (na guia ISSQN). Este parceiro deverá ser a prefeitura do município.

A questão é que o módulo l10n_br_account_withhoding gera uma fatura para pagar o ISS desta retenção, e o parceiro deve ser o da PREFEITURA do município selecionado na fatura.

Obs. O município não tem uma relação direta com o parceiro (fornecedor) mas ao município em que foi prestado o serviço, que deve ser selecionado na criação da fatura de fornecedor.

Acho que é isso que eu entendi da sua ideia Neto... :-)

@douglascstd
Copy link
Member

@kaynnan uma proposta:
ainda acho que a proposta de incluir um campo de parceiro no res.city é o mais simples.. mas vejo que podemos separar os modelos:
e deixar mais fexivel, poderiar ter um modelo:
cityhall.city, dentro dele um city_id e um partner_id (com uma restrição de ter somente um city_id por tabela)

@antoniospneto
Copy link
Sponsor Contributor

antoniospneto commented Jul 17, 2024

Oi Douglas, entendi a sua explicação e a proposta da PR.

A minha sugestão é aproveitar o vínculo do res_partner (prefeitura) com o city_id para exibi-lo também na visão do res.partner. Com isso, ao abrir o cadastro da Prefeitura, será possível visualizar as cidades associadas a ela para fins de retenção de impostos.

Na PR, está sendo feito:

class ResCity(models.Model):

    _inherit = "res.city"

    partner_wh_id = fields.Many2one(
        comodel_name="res.partner",
        string="WH Partner",
        help="Partner associated with this city for withholding tax purposes",
    )

Para complementar, sugiro adicionar o seguinte código no modelo res.partner:

class ResPartner(models.Model):
    _inherit = 'res.partner'

    city_wh_ids = fields.One2many(
        comodel_name="res.city",
        inverse_name="partner_wh_id",
        string="Cities with WH",
        help="Cities associated with this partner for withholding tax purposes",
    )

Mas é só uma sugestão, não tem necessidade ok

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from 4565721 to 97e8748 Compare July 17, 2024 21:12
@kaynnan
Copy link
Contributor Author

kaynnan commented Jul 17, 2024

Baseado no modelo fsm.wizard, desenvolvi um novo wizard que permite a conversão de um parceiro para um parceiro de retenção (WH). Esta funcionalidade facilitará futuras implementações de questões relacionadas a Estado e Governo para o WH. Implementei uma restrição para garantir que apenas um parceiro seja associado a cada município, visando manter a integridade dos dados.

Gostaria de pedir a revisão e o feedback de vocês sobre esta mudança, incluindo sugestões para melhorar o nome do wizard e quaisquer outras melhorias pertinentes.

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch 2 times, most recently from bab9d3d to 6eb098a Compare July 17, 2024 22:08
@antoniospneto
Copy link
Sponsor Contributor

fsm.wizard

Baseado no modelo fsm.wizard, desenvolvi um novo wizard que permite a conversão de um parceiro para um parceiro de retenção (WH). Esta funcionalidade facilitará futuras implementações de questões relacionadas a Estado e Governo para o WH. Implementei uma restrição para garantir que apenas um parceiro seja associado a cada município, visando manter a integridade dos dados.

Gostaria de pedir a revisão e o feedback de vocês sobre esta mudança, incluindo sugestões para melhorar o nome do wizard e quaisquer outras melhorias pertinentes.

Achei interessante a proposta, legal do campo ser um boleano, só achei estranho o wizard, sendo que só tem uma opção para selecionar que é Prefeitura.

@kaynnan
Copy link
Contributor Author

kaynnan commented Jul 17, 2024

fsm.wizard

Baseado no modelo fsm.wizard, desenvolvi um novo wizard que permite a conversão de um parceiro para um parceiro de retenção (WH). Esta funcionalidade facilitará futuras implementações de questões relacionadas a Estado e Governo para o WH. Implementei uma restrição para garantir que apenas um parceiro seja associado a cada município, visando manter a integridade dos dados.
Gostaria de pedir a revisão e o feedback de vocês sobre esta mudança, incluindo sugestões para melhorar o nome do wizard e quaisquer outras melhorias pertinentes.

Achei interessante a proposta, legal do campo ser um boleano, só achei estranho o wizard, sendo que só tem uma opção para selecionar que é Prefeitura.

Essa questão de somente uma seleção existente é por conta de ser uma ideia inicial, então mais para frente permitirá o pessoal adicionar outras seleções como Estado, Governo, tratando essas novas seleções no módulo, por momento seria destinada somente ao Munícipio mesmo

@marcelsavegnago
Copy link
Sponsor Member

marcelsavegnago commented Jul 19, 2024

@kaynnan nao sei se precisa de wizard para isso nao.. E talvez caberia implementar os campos parceiropara pagamento de tributos na cidade, estado e pais independente do imposto ser retido ou não. Hoje fariamos uso para as retenções mas amanha poderia ser utilizado para geração de pagamentos de tributos por algum outro modulo. Então pensando nisso talvez este campo parceiro nos modelos res.city res.state e res.country junto com um botão no cadastro do parceiro par amostar as cidades, estados e paises que ele está associado neste campo tax_partner_id ou similar e que soh aparece se houver relação.

Em tese o parceiro para quem vou pagar um imposto retido é o mesmo que vou pagar um imposto nao retido.

@rvalyi @antoniospneto oq acham ?

@antoniospneto
Copy link
Sponsor Contributor

ei se precisa de wizard para isso nao.. E talvez caberia implementar os campos parceiropara pagamento de tributos na cidade, estado e pais independente do imposto ser retido ou não. Hoje fariamos uso para as retenções mas amanha poderia ser utilizado para geração de pagamentos de tributos por algum outro modulo. Então pensando nisso talvez este campo parceiro nos modelos res.city res.state e res.country junto com um botão no cadastro do parceiro par amostar as cidades, estados e paises que ele está associado neste campo tax_partner_id ou similar e que soh aparece se houver relação.

Em tese o parceiro para quem vou pagar um imposto retido é o mesmo que vou pagar um imposto nao retido.

por mim pode ser sim

@renatonlima
Copy link
Member

Olá pessoal,

Eu não acho uma boa ideia incluir o um campo partner_id no res.city porque são 5.568 municípios e mesmo que uma empresa prestar serviço que seja para 10, 20, 30 empresas já vai ser um trabalho manual

A minha sugestão

O grupo de impostos atual existe um campo para definir se aquele tributo é federal, estadual ou municipal e existe um campo para definir o parceiro que ira recolher o imposto

image

Ao invés de usar um campo no res.city ou ter algum flag no res.partner, poderíamos aproveitar essas informações no grupo de impostos e no caso do parceiro, ter um parceiro pai "Prefeitura Municipal" E criar outros parceiros filhos desse parceiro para cada prefeitura

image

Inclusive em uma importação de uma NFS-e caso a prefeitura do município não esteja criada, é possível criar automáticamente sem depender de uma configuração manual e nesse caso também é possível ter uma validação para que se o parceiro pai está sendo usado em um grupo de impostos e o tipo de imposto é municipal não deixar gravar dois parceiros com o mesmo estado e município. Essa lógica também poderia ser feita para os impostos estaduais, onde teria um parceiro pai "Secretaria da Fazenda" e ter parceiros filhos "Secretaria da Fazenda ESTADO".

@marcelsavegnago
Copy link
Sponsor Member

marcelsavegnago commented Jul 26, 2024

@renatonlima, eu não gosto muito da ideia de ter que cadastrar a prefeitura vinculada a outro parceiro. Estava pensando na possibilidade de criar uma flag no partner sinalizando se é um parceiro de imposto municipal, estadual, país e criar talvez uma restrição permitindo apenas um parceiro com essa flag ativa para cada cidade, estado ou país.

Assim, deixamos o parceiro padrão configurado no grupo de imposto, mas, na lógica do módulo, colocamos a verificação da cidade onde o imposto incide (no caso ISS). Se houver um parceiro com a flag ativa naquela cidade, a fatura será gerada para esse parceiro, em vez do parceiro padrão.

O que acha ? Se for o caso ainda incluimos um parametro no grupo do imposto sinalizando se esta busca pelo parceiro com base neste flag deve ser feita.

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from 6eb098a to b945db0 Compare August 6, 2024 13:40
@kaynnan
Copy link
Contributor Author

kaynnan commented Aug 6, 2024

Pessoal, seguindo a lógica mencionada pelo @marcelsavegnago na última mensagem, atualizei o commit para incluir esse campo booleano. Como inicialmente a ideia seria aplicável para o caso de Cidades, acrescentei um TODO mencionando a possibilidade de incluir campos booleanos para Estadual e Federal.

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch 2 times, most recently from fd56492 to 08e8a59 Compare August 6, 2024 14:37
@kaynnan
Copy link
Contributor Author

kaynnan commented Aug 6, 2024

image

Commit que subi recente foi para alterar a configuração do campo Boolean para a aba Fiscal, ao invés de um <notebook> do WH

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from 08e8a59 to ca2c6d2 Compare August 6, 2024 14:40
@antoniospneto
Copy link
Sponsor Contributor

image

Commit que subi recente foi para alterar a configuração do campo Boolean para a aba Fiscal, ao invés de um <notebook> do WH

Será que o rotulo do campo não poderia ser apenas "Is City Hall?" e estar ali no grupo "Other Infos"?

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from ca2c6d2 to acf5214 Compare August 7, 2024 12:46
@kaynnan
Copy link
Contributor Author

kaynnan commented Aug 7, 2024

image
Commit que subi recente foi para alterar a configuração do campo Boolean para a aba Fiscal, ao invés de um <notebook> do WH

Será que o rotulo do campo não poderia ser apenas "Is City Hall?" e estar ali no grupo "Other Infos"?

Alterado o rótulo e inserido dentro do grupo de "Other Infos"

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch 3 times, most recently from 35b42df to 2787842 Compare August 21, 2024 20:29
Copy link
Sponsor Contributor

@antoniospneto antoniospneto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verificar os testes

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from 2787842 to 6ecbd56 Compare August 23, 2024 19:05
@kaynnan
Copy link
Contributor Author

kaynnan commented Aug 23, 2024

Realizei o rebase aqui, acredito que os testes normalizem, mas o codecov deve reportar um percentual baixo, em breve realizo outro commit para que o percentual seja alcançado corretamente.

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch 2 times, most recently from 1170574 to 72fbcda Compare August 27, 2024 19:06
@kaynnan
Copy link
Contributor Author

kaynnan commented Aug 27, 2024

Finalizado os testes unitários

Copy link
Contributor

@WesleyOliveira98 WesleyOliveira98 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[FUNCTIONAL REVIEW]

Criação do Parceiro Prefeitura de São Paulo
image

Configuração do Grupo de Imposto ISSQN RET
image

Teste 1 - Bill com ISSQN RET, Parceiro com cidade sem prefeitura cadastrada no sistema (Rio de Janeiro) e linha sem cidade do ISSQN:
image

image

Fatura de Retenção com o Parceiro definido no grupo de imposto:
image

Teste 2 - Bill com ISSQN RET, Parceiro com cidade que tem prefeitura cadastrada no sistema (São Paulo) e linha sem cidade do ISSQN:
image

image

Fatura de Retenção com o Parceiro (Prefeitura) localizada através da cidade do parceiro:
image

Teste 3 - Bill com ISSQN RET, Parceiro com cidade que sem prefeitura cadastrada no sistema (Porto Alegre) mas com a cidade do ISSQN (São Paulo) preenchida na linha:
image

image

Fatura de Retenção com o Parceiro (Prefeitura) localizada através da cidade do ISSQN preenchida na linha (São Paulo):
image

LGTM

@OCA-git-bot
Copy link
Contributor

This PR has the approved label and has been created more than 5 days ago. It should therefore be ready to merge by a maintainer (or a PSC member if the concerned addon has no declared maintainer). 🤖

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from 72fbcda to eb837c6 Compare August 28, 2024 14:46
@kaynnan
Copy link
Contributor Author

kaynnan commented Aug 28, 2024

Commit para adicionar informações sobre a utilização da Prefeitura para o ISSQN e seu respectivo funcionamento.

@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from eb837c6 to 60a67cf Compare August 28, 2024 14:51
@kaynnan kaynnan force-pushed the 14.0-imp-l10n_br_account_withholding-partner_issqn_city branch from 60a67cf to 492027d Compare September 13, 2024 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants