ecomplus / app-galaxpay

E-Com Plus app to integrate Galax Pay for recurring payments
MIT License
0 stars 1 forks source link

Atualizar valor de assinatura com alteração/remoção de produtos #58

Closed leomp12 closed 1 year ago

leomp12 commented 1 year ago

Precisamos alterar as assinaturas sempre que:

  1. O preço de algum item da assinatura é alterado;
  2. Algum item da assinatura fica sem estoque ou com estoque menor que a quantidade assinada;

Para isso a opção de configuração Quantidade de recorrência não deverá mais existir, todas as assinaturas serão criadas com prazo indeterminado para que o valor possa ser editado via https://docs.galaxpay.com.br/subscriptions/edit-value .

Na prática essa opção de configuração não tem utilidade, apenas para suprir a falta da feature desse issue (pra não manter assinaturas com preços defasados para sempre).

  1. Será necessário adicionar triggers para alteração de estoque e preço dos produtos (como neste app);
  2. A rota de webhook deve identificar o trigger de resource products, pelo corpo do trigger identificar os campos alterados (quantity ou price) e o sku (se não estiver presente no corpo do trigger deve ser necessário ler o produto na API), e então buscar na API os pedidos via Galaxpay (o original da assinatura) que tenham o SKU alterado entre os itens;
  3. O valor total da assinatura deve ser recalculado e se alterado o valor da assinatura deve ser atualizado no Galaxpay e (depois de confirmada a alteração) o pedido original deve ser alterado (items) na plataforma;
wisley7l commented 1 year ago

@leomp12 tava aqui realizando as correções e testando-as, aconteceu o seguinte, o sku, não vem no corpo da trigger.

Outra coisa foi que quando o produto é editado, tal como o controle de estoque: Vamos supor que um pedido tem um produto x e no estoque tem apenas um produto x Quando a pedido for confirmado o estoque do produto passa a ser 0 e então a trigger dispara e irá remover o produto x dessa assinatura também (mesmo que ainda não tenha sido entregue, nem se quer separado), ou seja o pedido original pode acabar sendo entregue sem todos o itens inicialmente escolhidos pelo clientes.

Por outro lado se a gnt so remover de pedidos que já tiveram produtos separados, podemos ter perdido o tempo da trigger.

Acho que a alteração do preço não seria um problema, mas a da quantidade e ha necessidade de remover o produto pode sem ocasionar outro problema(ao meu ver).

Faz sentido o que disse acima?

leomp12 commented 1 year ago

o sku, não vem no corpo da trigger

O corpo do trigger depende da request original na API né, de fato ele possivelmente vem sem o SKU.

Quando a pedido for confirmado o estoque do produto passa a ser 0 e então a trigger dispara e irá remover o produto x dessa assinatura também (mesmo que ainda não tenha sido entregue, nem se quer separado), ou seja o pedido original pode acabar sendo entregue sem todos o itens inicialmente escolhidos pelo clientes.

Nunca remova o item, edite a quantidade dele pra 0, daí se ele voltar ao estoque você volta ele na assinatura na quantidade original (tem que ser salva em algum lugar). Uma segunda opção é não alterar o pedido original na plataforma (acho que é melhor na verdade), apenas recalcule o total e altere a assinatura no Galaxpay, e sempre que for gerar um novo pedido oriundo de uma 2°/3°/(etc) período da assinatura você verifica os itens disponíveis antes de salvar em vez de só copiar "as is" do pedido original.

Por outro lado se a gnt so remover de pedidos que já tiveram produtos separados, podemos ter perdido o tempo da trigger.

Não entendi 🙃