Skip to content

Commit

Permalink
[FIX] Fixed invoice state
Browse files Browse the repository at this point in the history
  • Loading branch information
mjavint committed Jan 21, 2025
1 parent 9708b9a commit db7f883
Showing 1 changed file with 35 additions and 29 deletions.
64 changes: 35 additions & 29 deletions recurring_payment_stripe/models/account_move.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,35 +42,32 @@ def action_register_payment(self):
)

# Handling the result of the PaymentIntent
if payment_intent["status"] == "succeeded":
# If the payment is successful, record the payment on the invoice
Payment = self.env["account.payment"].sudo()
payment_vals = {
"journal_id": self.env["account.journal"]
.search([("type", "=", "bank")], limit=1)
.id,
"amount": invoice.amount_total,
"payment_type": "inbound",
"partner_type": "customer",
"partner_id": invoice.partner_id.id,
"payment_method_id": self.env.ref(
"account.account_payment_method_manual_in"
).id,
"ref": f"Stripe - {payment_intent['id']}",
}
payment = Payment.create(payment_vals)
payment.action_post()
invoice.state = "posted"
invoice.payment_state = "paid"
elif payment_intent["status"] == "requires_action":
if payment_intent["status"] != "succeeded":
raise UserError(

Check warning on line 46 in recurring_payment_stripe/models/account_move.py

View check run for this annotation

Codecov / codecov/patch

recurring_payment_stripe/models/account_move.py#L46

Added line #L46 was not covered by tests
_("Payment requires additional authentication (3D Secure).")
)
else:
raise UserError(
f"Stripe payment error: {payment_intent['status']}"
_("Payment failed with status: %s")
% payment_intent["status"]
)

# If the payment is successful, record the payment on
# the invoice
Payment = self.env["account.payment"].sudo()
payment_vals = {
"journal_id": self.env["account.journal"]
.search([("type", "=", "bank")], limit=1)
.id,
"amount": invoice.amount_total,
"payment_type": "inbound",
"partner_type": "customer",
"partner_id": invoice.partner_id.id,
"payment_method_id": self.env.ref(
"account.account_payment_method_manual_in"
).id,
"ref": f"Stripe - {payment_intent['id']}",
}
payment = Payment.create(payment_vals)
payment.action_post()
invoice.payment_state = "paid"

except stripe.StripeError as e:
raise UserError(f"Stripe error: {e}") from e

Check warning on line 72 in recurring_payment_stripe/models/account_move.py

View check run for this annotation

Codecov / codecov/patch

recurring_payment_stripe/models/account_move.py#L71-L72

Added lines #L71 - L72 were not covered by tests

Expand All @@ -79,7 +76,8 @@ def action_register_payment(self):

def _create_token(self, subscription):
provider = subscription.provider_id
# Search for an existing payment token for the given provider and partner
# Search for an existing payment token for the given provider and
# partner
token = self.env["payment.token"].search(
[
("provider_id", "=", provider.id),
Expand Down Expand Up @@ -112,13 +110,20 @@ def _create_token(self, subscription):
# Retrieve the default payment method for the customer,
# or create one if it doesn't exist
new_token.stripe_payment_method = (
stripe.PaymentMethod.list(customer=customer.id, type="card", limit=1)
stripe.PaymentMethod.list(
customer=customer.id,
type="card",
limit=1,
)
.data[0]
.id
if stripe.PaymentMethod.list(
customer=customer.id, type="card", limit=1
).data
else stripe.Customer.create_source(customer.id, source="tok_visa").id
else stripe.Customer.create_source(
customer.id,
source="tok_visa",
).id
)

# Assign the new token to the variable
Expand All @@ -138,6 +143,7 @@ def cron_process_due_invoices(self):
if subscription and subscription.charge_automatically:
try:
# Register the payment
invoice.action_post()
invoice.action_register_payment()
except Exception as e:
_logger.error(f"Error Processing Due Invoices: {str(e)}")

Check warning on line 149 in recurring_payment_stripe/models/account_move.py

View check run for this annotation

Codecov / codecov/patch

recurring_payment_stripe/models/account_move.py#L148-L149

Added lines #L148 - L149 were not covered by tests

0 comments on commit db7f883

Please sign in to comment.