submitOnlyForCouponOrPayAtStore method
dynamic
submitOnlyForCouponOrPayAtStore(})
Implementation
submitOnlyForCouponOrPayAtStore(
BuildContext context,
String id,
String cartId,
String amount,
String localCurrencyAmount, {
bool isCashOnDelivery = false,
}) async {
if (cacheCartId.isNotEmpty) {
ConditionalLogs().customLog("cacheCartId ($cacheCartId) is not empty");
return;
} else {
ConditionalLogs().customLog("cacheCartId ($cacheCartId) is empty");
cacheCartId.value = cartId;
}
Helper.progressDialog(context, "Please wait..");
String requestTime = DateTime.now().toString();
try {
var data = null;
// Only process for pickup orders
if (selectedDeliveryName.value == "pickup") {
// Handle "Pay at Store" scenario
if (isPaymentSelectName.value == "Pay at Store") {
data = {
"modeList": [
{
"id": "13",
"collection": [
[
{
"id": "8",
"value": amount,
"amount": true,
"formatAmount": true,
"label": "pos.common.payment.mode.amount",
"fieldMappingKey": "amount",
"fieldType": "INPUT"
}
]
]
}
],
"currency": "USD",
"isUpFrontOrderCreation": "false"
};
}
// Handle wallet-only scenario (no payment method selected but wallet is selected)
else if (isPaymentSelected.value == false &&
isWalletSelected.value == true) {
data = {
"modeList": [
{
"id": "7",
"collection": [
[
{
"id": "8",
"value": amount,
"amount": true,
"formatAmount": true,
"label": "pos.common.payment.mode.wallet.amount",
"fieldMappingKey": "amount",
"fieldType": "INPUT"
}
]
]
}
],
"currency": "USD",
"isUpFrontOrderCreation": "false"
};
} else {
// Neither condition met
print("Conditions not met for submitOnlyForCouponOrPayAtStore");
Helper.close();
cacheCartId.value = "";
return;
}
} else {
if (isPaymentSelected.value == false &&
isWalletSelected.value == true) {
// Handle the case where payment is NOT selected but wallet is selected
data = {
"modeList": [
{
"id": "7",
"collection": [
[
{
"id": "8",
"value": amount,
"amount": true,
"formatAmount": true,
"label": "pos.common.payment.mode.wallet.amount",
"fieldMappingKey": "amount",
"fieldType": "INPUT"
}
]
]
}
],
"currency": "USD",
"isUpFrontOrderCreation": "false"
};
} else {
// Not a pickup order
print("Not a pickup order");
Helper.close();
cacheCartId.value = "";
return;
}
}
var data_ = json.encode(
{
"paymentCollectionRequest": data,
"submitStockRequest": {
"paymentTransactionId": "",
"partnerId": partnerId,
"partnerType": storage.read("LEVEL_NAME"),
"distributeId": partnerId,
"distributeType": storage.read("LEVEL_NAME"),
"billingOrShippingAddressId": "",
"transactionRemarks": noteController.text.trim(),
"purchaseOrderReferenceNumber": ""
},
"relatedParty": [
{"name": cart_id.value, "role": "cartId"},
],
},
);
dio
.post(
'${ApiConstant.posBaseUrl}pos-purchase-order-service-svc/transaction/SELL_IN/submit',
data: data_,
options: Options(
headers: {
'X-User-Id': SecureStorageService.readSecureData(
SecureStorageService.xUserId,
),
'X-User-Name': SecureStorageService.readSecureData(
SecureStorageService.xUserName,
),
'Accept-Language': storage.read("selected_language") ?? "en",
"Authorization": "Bearer ${SecureStorageService.readSecureData(
SecureStorageService.accessToken,
)}",
'x-request-txn-id': UDID.uDID,
'x-trace-id': UDID.uDIDTraceId,
},
),
)
.then((response) {
Helper.logEvent(
"RESPONSE_EVENT",
success: true,
endPoint: 'pos-purchase-order-service-svc/transaction/SELL_IN/submit',
responseDate: DateTime.now().toString(),
screenName: "stockOrder",
requestDate: requestTime,
);
if (response.data != null) {
ConditionalLogs().customLog('submitStockOrder${response.data}');
SubmitStockOrderModel model = SubmitStockOrderModel();
Map<String, dynamic> creditData = response.data;
model = SubmitStockOrderModel.fromJson(creditData);
if (model.status == 'POS200') {
Helper.close();
if (model.data?.saleOrderId != null) {
paymentmodestatus = 0;
Get.to(
() =>
SellInSuccessScreen(orderId: model.data?.saleOrderId ?? ""),
);
}
} else {
Helper.close();
cacheCartId.value = "";
ConditionalLogs()
.customLog("cacheCartId ($cacheCartId) is removed");
MainController mainController = Get.put(MainController());
mainController.showErrorPopup();
}
} else {
Helper.close();
cacheCartId.value = "";
ConditionalLogs().customLog("cacheCartId ($cacheCartId) is removed");
MainController mainController = Get.put(MainController());
mainController.showErrorPopup();
}
}).catchError((err) {
ConditionalLogs().customLog("$err");
cacheCartId.value = "";
ConditionalLogs().customLog("cacheCartId ($cacheCartId) is removed");
if (err is DioException) {
UDID.setTraceId(
err.response?.headers.map[Constants.traceIdKey]?[0] ?? "",
);
Helper.logEvent(
"ERROR_EVENT",
failure: true,
requestDate: requestTime,
endPoint:
'pos-purchase-order-service-svc/transaction/SELL_IN/submit',
responseDate: DateTime.now().toString(),
screenName: "stockOrder",
error: err,
transactionId: cartId,
);
}
Helper.close();
MainController mainController = Get.put(MainController());
mainController.showErrorPopup();
});
} catch (err, stacktrace) {
cacheCartId.value = "";
ConditionalLogs().customLog("cacheCartId ($cacheCartId) is removed");
ConditionalLogs().customLog("$stacktrace");
if (err is DioException) {
UDID.setTraceId(
err.response?.headers.map[Constants.traceIdKey]?[0] ?? "",
);
Helper.logEvent(
"ERROR_EVENT",
failure: true,
requestDate: requestTime,
endPoint: 'pos-purchase-order-service-svc/transaction/SELL_IN/submit',
responseDate: DateTime.now().toString(),
screenName: "stockOrder",
error: err,
transactionId: cartId,
);
}
Helper.close();
MainController mainController = Get.put(MainController());
mainController.showErrorPopup();
}
}