add optional paramter with_details to request and details to response in GetFinancial in reports

This commit is contained in:
diPhantxm
2023-04-23 22:55:16 +03:00
committed by Kirill
parent a1c92ae26f
commit c1e7f2b370
3 changed files with 226 additions and 13 deletions

View File

@@ -313,3 +313,50 @@ const (
// delivery by the seller
NonIntegratedTPLType TPLIntegrationType = "non_integrated"
)
type DetailsDeliveryItemName string
const (
DirectFlowLogisticSumDetailsDeliveryItemName DetailsDeliveryItemName = "MarketplaceServiceItemDirectFlowLogisticSum"
DropoffDetailsDeliveryItemName DetailsDeliveryItemName = "MarketplaceServiceItemDropoff"
DelivToCustomerDetailsDeliveryItemName DetailsDeliveryItemName = "MarketplaceServiceItemDelivToCustomer"
)
type DetailsReturnServiceName string
const (
ReturnAfterDelivToCustomerDetailsReturnServiceName DetailsReturnServiceName = "MarketplaceServiceItemReturnAfterDelivToCustomer"
ReturnPartGoodsCustomerDetailsReturnServiceName DetailsReturnServiceName = "MarketplaceServiceItemReturnPartGoodsCustomer"
ReturnNotDelivToCustomerDetailsReturnServiceName DetailsReturnServiceName = "MarketplaceServiceItemReturnNotDelivToCustomer"
ReturnFlowLogisticDetailsReturnServiceName DetailsReturnServiceName = "MarketplaceServiceItemReturnFlowLogistic"
)
type DetailsServiceItemName string
const (
OtherMarketAndTech DetailsServiceItemName = "MarketplaceServiceItemOtherMarketAndTechService"
ReturnStorageServiceAtThePickupPointFbsItem DetailsServiceItemName = "MarketplaceReturnStorageServiceAtThePickupPointFbsItem"
SaleReviewsItem DetailsServiceItemName = "MarketplaceSaleReviewsItem"
ServicePremiumCashbackIndividualPoints DetailsServiceItemName = "MarketplaceServicePremiumCashbackIndividualPoints"
ServiceStorageItem DetailsServiceItemName = "MarketplaceServiceStorageItem"
ServiceStockDisposal DetailsServiceItemName = "MarketplaceServiceStockDisposal"
ReturnDisposalServiceFbsItem DetailsServiceItemName = "MarketplaceReturnDisposalServiceFbsItem"
ServiceItemFlexiblePaymentSchedule DetailsServiceItemName = "MarketplaceServiceItemFlexiblePaymentSchedule"
ServiceProcessingSpoilage DetailsServiceItemName = "MarketplaceServiceProcessingSpoilage"
ServiceProcessingIdentifiedSurplus DetailsServiceItemName = "MarketplaceServiceProcessingIdentifiedSurplus"
ServiceProcessingIdentifiedDiscrepancies DetailsServiceItemName = "MarketplaceServiceProcessingIdentifiedDiscrepancies"
ServiceItemInternetSiteAdvertising DetailsServiceItemName = "MarketplaceServiceItemInternetSiteAdvertising"
ServiceItemPremiumSubscribtion DetailsServiceItemName = "MarketplaceServiceItemPremiumSubscribtion"
AgencyFeeAggregator3PLGlobalItem DetailsServiceItemName = "MarketplaceAgencyFeeAggregator3PLGlobalItem"
)
type DetailsOtherItemName string
const (
RedistributionOfAcquiringOperation DetailsOtherItemName = "MarketplaceRedistributionOfAcquiringOperation"
CompensationLossOfGoodsOperation DetailsOtherItemName = "MarketplaceSellerCompensationLossOfGoodsOperation"
CorrectionOperation DetailsOtherItemName = "MarketplaceSellerCorrectionOperation"
OperationCorrectionSeller DetailsOtherItemName = "OperationCorrectionSeller"
OperationMarketplaceWithHoldingForUndeliverableGoods DetailsOtherItemName = "OperationMarketplaceWithHoldingForUndeliverableGoods"
OperationClaim DetailsOtherItemName = "OperationClaim"
)

View File

@@ -159,6 +159,9 @@ type GetFinancialReportParams struct {
// Number of the page returned in the request
Page int64 `json:"page"`
// true, если нужно добавить дополнительные параметры в ответ
WithDetails bool `json:"with_details"`
// Number of items on the page
PageSize int64 `json:"page_size"`
}
@@ -209,6 +212,99 @@ type GetFinancialReportResponse struct {
CurrencyCode string `json:"currency_code"`
} `json:"cash_flows"`
// Detailed info
Details struct {
// Balance on the beginning of period
BeginBalanceAmount float64 `json:"begin_balance_amount"`
// Orders
Delivery struct {
Total float64 `json:"total"`
Amount float64 `json:"amount"`
DeliveryServices struct {
Total float64 `json:"total"`
Items []struct {
Name DetailsDeliveryItemName `json:"name"`
Price float64 `json:"price"`
} `json:"items"`
} `json:"delivery_services"`
} `json:"delivery"`
InvoiceTransfer float64 `json:"invoice_transfer"`
Loan float64 `json:"loan"`
Payments []struct {
CurrencyCode string `json:"currency_code"`
Payment float64 `json:"payment"`
} `json:"payments"`
Period struct {
Begin time.Time `json:"begin"`
End time.Time `json:"end"`
Id int64 `json:"id"`
} `json:"period"`
Return struct {
Total float64 `json:"total"`
Amount float64 `json:"amount"`
ReturnServices struct {
Total float64 `json:"total"`
Items []struct {
Name DetailsReturnServiceName `json:"name"`
Price float64 `json:"price"`
} `json:"items"`
} `json:"return_services"`
} `json:"return"`
RFBS struct {
Total float64 `json:"total"`
TransferDelivery float64 `json:"transfer_delivery"`
TransferDeliveryReturn float64 `json:"transfer_delivery_return"`
CompensationDeliveryReturn float64 `json:"compensation_delivery_return"`
PartialCompensation float64 `json:"partial_compensation"`
PartialCompensationReturn float64 `json:"partial_compensation_return"`
} `json:"rfbs"`
Services struct {
Total float64 `json:"total"`
Items []struct {
Name DetailsServiceItemName `json:"name"`
Price float64 `json:"price"`
} `json:"items"`
} `json:"services"`
Others struct {
Total float64 `json:"total"`
Items []struct {
Name DetailsOtherItemName `json:"name"`
Price float64 `json:"price"`
} `json:"items"`
} `json:"others"`
EndBalanceAmount float64 `json:"end_balance_amount"`
} `json:"details"`
// Number of pages with reports
PageCount int64 `json:"page_count"`
} `json:"result"`

View File

@@ -165,28 +165,98 @@ func TestGetFinancialReport(t *testing.T) {
From: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2022-01-01T00:00:00.000Z"),
To: core.TimeFromString(t, "2006-01-02T15:04:05Z", "2022-12-31T00:00:00.000Z"),
},
Page: 1,
PageSize: 1,
WithDetails: true,
Page: 1,
PageSize: 1,
},
`{
"result": {
"cash_flows": [
{
"period": {
"id": 11567022278500,
"begin": "2022-08-01T00:00:00Z",
"end": "2022-08-15T00:00:00Z"
},
"orders_amount": 1000,
"returns_amount": -3000,
"commission_amount": 1437,
"services_amount": 8471.28,
"currency_code": "string",
"item_delivery_and_return_amount": 1991,
"currency_code": "RUB"
"orders_amount": 1000,
"period": {
"begin": "2023-04-03T09:12:10.239Z",
"end": "2023-04-03T09:12:10.239Z",
"id": 11567022278500
},
"returns_amount": -3000,
"services_amount": 8471.28
}
],
"page_count": 15
}
"details": {
"period": {
"begin": "2023-04-03T09:12:10.239Z",
"end": "2023-04-03T09:12:10.239Z",
"id": 11567022278500
},
"payments": [
{
"payment": 0,
"currency_code": "string"
}
],
"begin_balance_amount": 0,
"delivery": {
"total": 0,
"amount": 0,
"delivery_services": {
"total": 0,
"items": [
{
"name": "string",
"price": 0
}
]
}
},
"return": {
"total": 0,
"amount": 0,
"return_services": {
"total": 0,
"items": [
{
"name": "string",
"price": 0
}
]
}
},
"loan": 0,
"invoice_transfer": 0,
"rfbs": {
"total": 0,
"transfer_delivery": 0,
"transfer_delivery_return": 0,
"compensation_delivery_return": 0,
"partial_compensation": 0,
"partial_compensation_return": 0
},
"services": {
"total": 0,
"items": [
{
"name": "string",
"price": 0
}
]
},
"others": {
"total": 0,
"items": [
{
"name": "string",
"price": 0
}
]
},
"end_balance_amount": 0
}
},
"page_count": 15
}`,
},
// Test No Client-Id or Api-Key