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

feat(payments): improve adjustment system for stripe #1156

Merged
merged 4 commits into from
Jan 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions components/fctl/cmd/payments/payments/show.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,5 +110,23 @@ func (c *ShowController) Render(cmd *cobra.Command, args []string) error {
return err
}

tableData = fctl.Map(c.store.Payment.Adjustments, func(pa shared.PaymentAdjustment) []string {
return []string{
pa.Reference,
string(pa.Status),
pa.CreatedAt.Format(time.RFC3339),
pa.Amount.String(),
}
})

tableData = fctl.Prepend(tableData, []string{"Reference", "Status", "CreatedAt", "Amount"})
if err := pterm.DefaultTable.
WithHasHeader().
WithWriter(cmd.OutOrStdout()).
WithData(tableData).
Render(); err != nil {
return err
}

return fctl.PrintMetadata(cmd.OutOrStdout(), c.store.Payment.Metadata)
}
30 changes: 15 additions & 15 deletions components/payments/cmd/api/internal/api/payments.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ type paymentResponse struct {
}

type paymentAdjustment struct {
Status models.PaymentStatus `json:"status" bson:"status"`
Amount int64 `json:"amount" bson:"amount"`
Date time.Time `json:"date" bson:"date"`
Raw interface{} `json:"raw" bson:"raw"`
Absolute bool `json:"absolute" bson:"absolute"`
Reference string `json:"reference" bson:"reference"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
Status models.PaymentStatus `json:"status" bson:"status"`
Amount *big.Int `json:"amount" bson:"amount"`
Raw interface{} `json:"raw" bson:"raw"`
}

func createPaymentHandler(b backend.Backend) http.HandlerFunc {
Expand Down Expand Up @@ -145,11 +145,11 @@ func listPaymentsHandler(b backend.Backend) http.HandlerFunc {

for adjustmentIdx := range ret[i].Adjustments {
data[i].Adjustments[adjustmentIdx] = paymentAdjustment{
Status: ret[i].Adjustments[adjustmentIdx].Status,
Amount: ret[i].Adjustments[adjustmentIdx].Amount,
Date: ret[i].Adjustments[adjustmentIdx].CreatedAt,
Raw: ret[i].Adjustments[adjustmentIdx].RawData,
Absolute: ret[i].Adjustments[adjustmentIdx].Absolute,
Reference: ret[i].Adjustments[adjustmentIdx].Reference,
Status: ret[i].Adjustments[adjustmentIdx].Status,
Amount: ret[i].Adjustments[adjustmentIdx].Amount,
CreatedAt: ret[i].Adjustments[adjustmentIdx].CreatedAt,
Raw: ret[i].Adjustments[adjustmentIdx].RawData,
}
}

Expand Down Expand Up @@ -219,11 +219,11 @@ func readPaymentHandler(b backend.Backend) http.HandlerFunc {

for i := range payment.Adjustments {
data.Adjustments[i] = paymentAdjustment{
Status: payment.Adjustments[i].Status,
Amount: payment.Adjustments[i].Amount,
Date: payment.Adjustments[i].CreatedAt,
Raw: payment.Adjustments[i].RawData,
Absolute: payment.Adjustments[i].Absolute,
Reference: payment.Adjustments[i].Reference,
Status: payment.Adjustments[i].Status,
Amount: payment.Adjustments[i].Amount,
CreatedAt: payment.Adjustments[i].CreatedAt,
Raw: payment.Adjustments[i].RawData,
}
}

Expand Down
4 changes: 2 additions & 2 deletions components/payments/cmd/api/internal/storage/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import (
)

func (s *Storage) UpdatePaymentMetadata(ctx context.Context, paymentID models.PaymentID, metadata map[string]string) error {
var metadataToInsert []models.Metadata // nolint:prealloc // it's against a map
var metadataToInsert []models.PaymentMetadata // nolint:prealloc // it's against a map

for key, value := range metadata {
metadataToInsert = append(metadataToInsert, models.Metadata{
metadataToInsert = append(metadataToInsert, models.PaymentMetadata{
PaymentID: paymentID,
Key: key,
Value: value,
Expand Down
4 changes: 2 additions & 2 deletions components/payments/cmd/api/internal/storage/payments.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ func (s *Storage) UpsertPayments(ctx context.Context, payments []*models.Payment
return e("failed to create payments", err)
}

var adjustments []*models.Adjustment
var metadata []*models.Metadata
var adjustments []*models.PaymentAdjustment
var metadata []*models.PaymentMetadata

for i := range payments {
for _, adjustment := range payments[i].Adjustments {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,17 @@ func ComputeAccountMetadataBool(key string, value bool) metadata.Metadata {
return ComputeAccountMetadata(key, computedValue)
}

func ComputePaymentMetadata(paymentId models.PaymentID, key, value string) *models.Metadata {
func ComputePaymentMetadata(paymentId models.PaymentID, key, value string) *models.PaymentMetadata {
namespacedKey := fmt.Sprintf("%s%s", atlarMetadataSpecNamespace, key)
return &models.Metadata{
return &models.PaymentMetadata{
PaymentID: paymentId,
CreatedAt: time.Now(),
Key: namespacedKey,
Value: value,
}
}

func ComputePaymentMetadataBool(paymentId models.PaymentID, key string, value bool) *models.Metadata {
func ComputePaymentMetadataBool(paymentId models.PaymentID, key string, value bool) *models.PaymentMetadata {
computedValue := valueFALSE
if value {
computedValue = valueTRUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ func ingestPaymentsBatch(
Metadata: ExtractPaymentMetadata(paymentId, item),
RawData: raw,
},
Update: true,
}

if *itemAmount.Value >= 0 {
Expand Down Expand Up @@ -181,8 +180,8 @@ func determinePaymentScheme(item *atlar_models.Transaction) models.PaymentScheme
return models.PaymentSchemeSepa
}

func ExtractPaymentMetadata(paymentId models.PaymentID, transaction *atlar_models.Transaction) []*models.Metadata {
result := []*models.Metadata{}
func ExtractPaymentMetadata(paymentId models.PaymentID, transaction *atlar_models.Transaction) []*models.PaymentMetadata {
result := []*models.PaymentMetadata{}
if transaction.Date != "" {
result = append(result, ComputePaymentMetadata(paymentId, "date", transaction.Date))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,6 @@ func handlePayment(connectorID models.ConnectorID, paymentElement *payment) (ing
Asset: models.Asset(paymentElement.Asset),
RawData: raw,
},
Update: true,
}}

return ingestionPayload, nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ func (tl *Timeline) doTransactionsRequest(ctx context.Context, queryParams url.V
options := make([]client.ClientOption, 0)
options = append(options, client.QueryParam("limit", fmt.Sprintf("%d", tl.config.PageSize)))
options = append(options, client.QueryParam("expand[]", "data.source"))
options = append(options, client.QueryParam("expand[]", "data.source.charge"))

for k, v := range queryParams {
options = append(options, client.QueryParam(k, v[0]))
Expand Down
Loading
Loading