1pub mod picking_batch_dto;
9pub mod delivery_note_dto;
10pub mod delivery_note_item_dto;
11pub mod inventory_company_setting_dto;
12pub mod landed_cost_dto;
13pub mod landed_cost_line_dto;
14pub mod landed_cost_adjustment_line_dto;
15pub mod location_dto;
16pub mod stock_move_dto;
17pub mod stock_move_line_dto;
18pub mod operation_type_dto;
19pub mod transfer_dto;
20pub mod route_dto;
21pub mod route_rule_dto;
22pub mod reordering_rule_dto;
23pub mod purchase_receipt_dto;
24pub mod purchase_receipt_item_dto;
25pub mod quant_dto;
26pub mod scrap_dto;
27pub mod scrap_reason_tag_dto;
28pub mod stock_entry_dto;
29pub mod stock_entry_item_dto;
30pub mod stock_ledger_entry_dto;
31pub mod bin_dto;
32pub mod stock_reconciliation_dto;
33pub mod stock_reconciliation_item_dto;
34pub mod package_type_dto;
35pub mod storage_category_dto;
36pub mod storage_category_capacity_dto;
37pub mod putaway_rule_dto;
38pub mod lot_dto;
39pub mod package_dto;
40pub mod warehouse_dto;
41pub mod stock_item_dto;
42
43pub use picking_batch_dto::{
45 CreatePickingBatchDto,
46 UpdatePickingBatchDto,
47 PatchPickingBatchDto,
48 PickingBatchResponseDto,
49 PickingBatchListResponseDto,
50 PickingBatchSummaryDto,
51};
52pub use delivery_note_dto::{
53 CreateDeliveryNoteDto,
54 UpdateDeliveryNoteDto,
55 PatchDeliveryNoteDto,
56 DeliveryNoteResponseDto,
57 DeliveryNoteListResponseDto,
58 DeliveryNoteSummaryDto,
59};
60pub use delivery_note_item_dto::{
61 CreateDeliveryNoteItemDto,
62 UpdateDeliveryNoteItemDto,
63 PatchDeliveryNoteItemDto,
64 DeliveryNoteItemResponseDto,
65 DeliveryNoteItemListResponseDto,
66 DeliveryNoteItemSummaryDto,
67};
68pub use inventory_company_setting_dto::{
69 CreateInventoryCompanySettingDto,
70 UpdateInventoryCompanySettingDto,
71 PatchInventoryCompanySettingDto,
72 InventoryCompanySettingResponseDto,
73 InventoryCompanySettingListResponseDto,
74 InventoryCompanySettingSummaryDto,
75};
76pub use landed_cost_dto::{
77 CreateLandedCostDto,
78 UpdateLandedCostDto,
79 PatchLandedCostDto,
80 LandedCostResponseDto,
81 LandedCostListResponseDto,
82 LandedCostSummaryDto,
83};
84pub use landed_cost_line_dto::{
85 CreateLandedCostLineDto,
86 UpdateLandedCostLineDto,
87 PatchLandedCostLineDto,
88 LandedCostLineResponseDto,
89 LandedCostLineListResponseDto,
90 LandedCostLineSummaryDto,
91};
92pub use landed_cost_adjustment_line_dto::{
93 CreateLandedCostAdjustmentLineDto,
94 UpdateLandedCostAdjustmentLineDto,
95 PatchLandedCostAdjustmentLineDto,
96 LandedCostAdjustmentLineResponseDto,
97 LandedCostAdjustmentLineListResponseDto,
98 LandedCostAdjustmentLineSummaryDto,
99};
100pub use location_dto::{
101 CreateLocationDto,
102 UpdateLocationDto,
103 PatchLocationDto,
104 LocationResponseDto,
105 LocationListResponseDto,
106 LocationSummaryDto,
107};
108pub use stock_move_dto::{
109 CreateStockMoveDto,
110 UpdateStockMoveDto,
111 PatchStockMoveDto,
112 StockMoveResponseDto,
113 StockMoveListResponseDto,
114 StockMoveSummaryDto,
115};
116pub use stock_move_line_dto::{
117 CreateStockMoveLineDto,
118 UpdateStockMoveLineDto,
119 PatchStockMoveLineDto,
120 StockMoveLineResponseDto,
121 StockMoveLineListResponseDto,
122 StockMoveLineSummaryDto,
123};
124pub use operation_type_dto::{
125 CreateOperationTypeDto,
126 UpdateOperationTypeDto,
127 PatchOperationTypeDto,
128 OperationTypeResponseDto,
129 OperationTypeListResponseDto,
130 OperationTypeSummaryDto,
131};
132pub use transfer_dto::{
133 CreateTransferDto,
134 UpdateTransferDto,
135 PatchTransferDto,
136 TransferResponseDto,
137 TransferListResponseDto,
138 TransferSummaryDto,
139};
140pub use route_dto::{
141 CreateRouteDto,
142 UpdateRouteDto,
143 PatchRouteDto,
144 RouteResponseDto,
145 RouteListResponseDto,
146 RouteSummaryDto,
147};
148pub use route_rule_dto::{
149 CreateRouteRuleDto,
150 UpdateRouteRuleDto,
151 PatchRouteRuleDto,
152 RouteRuleResponseDto,
153 RouteRuleListResponseDto,
154 RouteRuleSummaryDto,
155};
156pub use reordering_rule_dto::{
157 CreateReorderingRuleDto,
158 UpdateReorderingRuleDto,
159 PatchReorderingRuleDto,
160 ReorderingRuleResponseDto,
161 ReorderingRuleListResponseDto,
162 ReorderingRuleSummaryDto,
163};
164pub use purchase_receipt_dto::{
165 CreatePurchaseReceiptDto,
166 UpdatePurchaseReceiptDto,
167 PatchPurchaseReceiptDto,
168 PurchaseReceiptResponseDto,
169 PurchaseReceiptListResponseDto,
170 PurchaseReceiptSummaryDto,
171};
172pub use purchase_receipt_item_dto::{
173 CreatePurchaseReceiptItemDto,
174 UpdatePurchaseReceiptItemDto,
175 PatchPurchaseReceiptItemDto,
176 PurchaseReceiptItemResponseDto,
177 PurchaseReceiptItemListResponseDto,
178 PurchaseReceiptItemSummaryDto,
179};
180pub use quant_dto::{
181 CreateQuantDto,
182 UpdateQuantDto,
183 PatchQuantDto,
184 QuantResponseDto,
185 QuantListResponseDto,
186 QuantSummaryDto,
187};
188pub use scrap_dto::{
189 CreateScrapDto,
190 UpdateScrapDto,
191 PatchScrapDto,
192 ScrapResponseDto,
193 ScrapListResponseDto,
194 ScrapSummaryDto,
195};
196pub use scrap_reason_tag_dto::{
197 CreateScrapReasonTagDto,
198 UpdateScrapReasonTagDto,
199 PatchScrapReasonTagDto,
200 ScrapReasonTagResponseDto,
201 ScrapReasonTagListResponseDto,
202 ScrapReasonTagSummaryDto,
203};
204pub use stock_entry_dto::{
205 CreateStockEntryDto,
206 UpdateStockEntryDto,
207 PatchStockEntryDto,
208 StockEntryResponseDto,
209 StockEntryListResponseDto,
210 StockEntrySummaryDto,
211};
212pub use stock_entry_item_dto::{
213 CreateStockEntryItemDto,
214 UpdateStockEntryItemDto,
215 PatchStockEntryItemDto,
216 StockEntryItemResponseDto,
217 StockEntryItemListResponseDto,
218 StockEntryItemSummaryDto,
219};
220pub use stock_ledger_entry_dto::{
221 CreateStockLedgerEntryDto,
222 UpdateStockLedgerEntryDto,
223 PatchStockLedgerEntryDto,
224 StockLedgerEntryResponseDto,
225 StockLedgerEntryListResponseDto,
226 StockLedgerEntrySummaryDto,
227};
228pub use bin_dto::{
229 CreateBinDto,
230 UpdateBinDto,
231 PatchBinDto,
232 BinResponseDto,
233 BinListResponseDto,
234 BinSummaryDto,
235};
236pub use stock_reconciliation_dto::{
237 CreateStockReconciliationDto,
238 UpdateStockReconciliationDto,
239 PatchStockReconciliationDto,
240 StockReconciliationResponseDto,
241 StockReconciliationListResponseDto,
242 StockReconciliationSummaryDto,
243};
244pub use stock_reconciliation_item_dto::{
245 CreateStockReconciliationItemDto,
246 UpdateStockReconciliationItemDto,
247 PatchStockReconciliationItemDto,
248 StockReconciliationItemResponseDto,
249 StockReconciliationItemListResponseDto,
250 StockReconciliationItemSummaryDto,
251};
252pub use package_type_dto::{
253 CreatePackageTypeDto,
254 UpdatePackageTypeDto,
255 PatchPackageTypeDto,
256 PackageTypeResponseDto,
257 PackageTypeListResponseDto,
258 PackageTypeSummaryDto,
259};
260pub use storage_category_dto::{
261 CreateStorageCategoryDto,
262 UpdateStorageCategoryDto,
263 PatchStorageCategoryDto,
264 StorageCategoryResponseDto,
265 StorageCategoryListResponseDto,
266 StorageCategorySummaryDto,
267};
268pub use storage_category_capacity_dto::{
269 CreateStorageCategoryCapacityDto,
270 UpdateStorageCategoryCapacityDto,
271 PatchStorageCategoryCapacityDto,
272 StorageCategoryCapacityResponseDto,
273 StorageCategoryCapacityListResponseDto,
274 StorageCategoryCapacitySummaryDto,
275};
276pub use putaway_rule_dto::{
277 CreatePutawayRuleDto,
278 UpdatePutawayRuleDto,
279 PatchPutawayRuleDto,
280 PutawayRuleResponseDto,
281 PutawayRuleListResponseDto,
282 PutawayRuleSummaryDto,
283};
284pub use lot_dto::{
285 CreateLotDto,
286 UpdateLotDto,
287 PatchLotDto,
288 LotResponseDto,
289 LotListResponseDto,
290 LotSummaryDto,
291};
292pub use package_dto::{
293 CreatePackageDto,
294 UpdatePackageDto,
295 PatchPackageDto,
296 PackageResponseDto,
297 PackageListResponseDto,
298 PackageSummaryDto,
299};
300pub use warehouse_dto::{
301 CreateWarehouseDto,
302 UpdateWarehouseDto,
303 PatchWarehouseDto,
304 WarehouseResponseDto,
305 WarehouseListResponseDto,
306 WarehouseSummaryDto,
307};
308pub use stock_item_dto::{
309 CreateStockItemDto,
310 UpdateStockItemDto,
311 PatchStockItemDto,
312 StockItemResponseDto,
313 StockItemListResponseDto,
314 StockItemSummaryDto,
315};
316
317use serde::Serialize;
319
320#[cfg(feature = "openapi")]
321#[cfg(feature = "openapi")]
322use utoipa::ToSchema;
323
324#[derive(Debug, Clone, Default, serde::Deserialize)]
326#[cfg_attr(feature = "openapi", derive(ToSchema))]
327pub struct PaginationParams {
328 #[serde(default = "default_page")]
330 pub page: u32,
331 #[serde(default = "default_per_page")]
333 pub per_page: u32,
334 pub sort_by: Option<String>,
336 pub sort_order: Option<String>,
338}
339
340fn default_page() -> u32 { 1 }
341fn default_per_page() -> u32 { 20 }
342
343#[derive(Debug, Clone, Serialize)]
345#[cfg_attr(feature = "openapi", derive(ToSchema))]
346#[serde(rename_all = "camelCase")]
347pub struct ApiResponse<T> {
348 pub success: bool,
349 #[serde(skip_serializing_if = "Option::is_none")]
350 pub data: Option<T>,
351 #[serde(skip_serializing_if = "Option::is_none")]
352 pub error: Option<ApiError>,
353}
354
355#[derive(Debug, Clone, Serialize)]
356#[cfg_attr(feature = "openapi", derive(ToSchema))]
357pub struct ApiError {
358 pub code: String,
359 pub message: String,
360 #[serde(skip_serializing_if = "Option::is_none")]
361 pub details: Option<serde_json::Value>,
362}
363
364impl<T> ApiResponse<T> {
365 pub fn ok(data: T) -> Self {
366 Self { success: true, data: Some(data), error: None }
367 }
368
369 pub fn err(code: impl Into<String>, message: impl Into<String>) -> Self {
370 Self {
371 success: false,
372 data: None,
373 error: Some(ApiError {
374 code: code.into(),
375 message: message.into(),
376 details: None,
377 }),
378 }
379 }
380}