Merge branch 'development_sikander' into 'master'
purchase order & move order, item history & quotation analysis added. See merge request mirza.shafique/mohem_flutter_app!18merge-requests/1/merge
commit
9e0a598245
@ -0,0 +1,72 @@
|
|||||||
|
class GetAttachementList {
|
||||||
|
int? aTTACHEDDOCUMENTID;
|
||||||
|
int? cATEGORYID;
|
||||||
|
int? dATATYPEID;
|
||||||
|
int? dOCUMENTID;
|
||||||
|
String? eNTITYNAME;
|
||||||
|
String? fILECONTENTTYPE;
|
||||||
|
String? fILEDATA;
|
||||||
|
int? fILEID;
|
||||||
|
String? fILENAME;
|
||||||
|
String? pK1VALUE;
|
||||||
|
String? pK2VALUE;
|
||||||
|
String? pK3VALUE;
|
||||||
|
String? pK4VALUE;
|
||||||
|
String? pK5VALUE;
|
||||||
|
int? sEQNUM;
|
||||||
|
|
||||||
|
GetAttachementList(
|
||||||
|
{this.aTTACHEDDOCUMENTID,
|
||||||
|
this.cATEGORYID,
|
||||||
|
this.dATATYPEID,
|
||||||
|
this.dOCUMENTID,
|
||||||
|
this.eNTITYNAME,
|
||||||
|
this.fILECONTENTTYPE,
|
||||||
|
this.fILEDATA,
|
||||||
|
this.fILEID,
|
||||||
|
this.fILENAME,
|
||||||
|
this.pK1VALUE,
|
||||||
|
this.pK2VALUE,
|
||||||
|
this.pK3VALUE,
|
||||||
|
this.pK4VALUE,
|
||||||
|
this.pK5VALUE,
|
||||||
|
this.sEQNUM});
|
||||||
|
|
||||||
|
GetAttachementList.fromJson(Map<String, dynamic> json) {
|
||||||
|
aTTACHEDDOCUMENTID = json['ATTACHED_DOCUMENT_ID'];
|
||||||
|
cATEGORYID = json['CATEGORY_ID'];
|
||||||
|
dATATYPEID = json['DATATYPE_ID'];
|
||||||
|
dOCUMENTID = json['DOCUMENT_ID'];
|
||||||
|
eNTITYNAME = json['ENTITY_NAME'];
|
||||||
|
fILECONTENTTYPE = json['FILE_CONTENT_TYPE'];
|
||||||
|
fILEDATA = json['FILE_DATA'];
|
||||||
|
fILEID = json['FILE_ID'];
|
||||||
|
fILENAME = json['FILE_NAME'];
|
||||||
|
pK1VALUE = json['PK1_VALUE'];
|
||||||
|
pK2VALUE = json['PK2_VALUE'];
|
||||||
|
pK3VALUE = json['PK3_VALUE'];
|
||||||
|
pK4VALUE = json['PK4_VALUE'];
|
||||||
|
pK5VALUE = json['PK5_VALUE'];
|
||||||
|
sEQNUM = json['SEQ_NUM'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['ATTACHED_DOCUMENT_ID'] = this.aTTACHEDDOCUMENTID;
|
||||||
|
data['CATEGORY_ID'] = this.cATEGORYID;
|
||||||
|
data['DATATYPE_ID'] = this.dATATYPEID;
|
||||||
|
data['DOCUMENT_ID'] = this.dOCUMENTID;
|
||||||
|
data['ENTITY_NAME'] = this.eNTITYNAME;
|
||||||
|
data['FILE_CONTENT_TYPE'] = this.fILECONTENTTYPE;
|
||||||
|
data['FILE_DATA'] = this.fILEDATA;
|
||||||
|
data['FILE_ID'] = this.fILEID;
|
||||||
|
data['FILE_NAME'] = this.fILENAME;
|
||||||
|
data['PK1_VALUE'] = this.pK1VALUE;
|
||||||
|
data['PK2_VALUE'] = this.pK2VALUE;
|
||||||
|
data['PK3_VALUE'] = this.pK3VALUE;
|
||||||
|
data['PK4_VALUE'] = this.pK4VALUE;
|
||||||
|
data['PK5_VALUE'] = this.pK5VALUE;
|
||||||
|
data['SEQ_NUM'] = this.sEQNUM;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
class GetMoItemHistoryList {
|
||||||
|
String? dATEREQUIRED;
|
||||||
|
String? dESCRIPTION;
|
||||||
|
String? fROMLOCATOR;
|
||||||
|
int? fROMROWNUM;
|
||||||
|
String? fROMSUBINVENTORYCODE;
|
||||||
|
String? iTEMCODE;
|
||||||
|
String? lINESTATUSDIS;
|
||||||
|
int? nOOFROWS;
|
||||||
|
String? oPERATINGUNITNAME;
|
||||||
|
String? oRGANIZATIONCODE;
|
||||||
|
int? oRGANIZATIONID;
|
||||||
|
String? oRGANIZATIONNAME;
|
||||||
|
int? qUANTITY;
|
||||||
|
String? rEQUESTNUMBER;
|
||||||
|
int? rOWNUM;
|
||||||
|
String? sHIPTOLOCATION;
|
||||||
|
String? sTATUSDATE;
|
||||||
|
String? tOLOCATOR;
|
||||||
|
int? tOROWNUM;
|
||||||
|
String? tOSUBINVENTORYCODE;
|
||||||
|
String? tRANSACTIONTYPENAME;
|
||||||
|
String? uNITOFMEASURE;
|
||||||
|
|
||||||
|
GetMoItemHistoryList(
|
||||||
|
{this.dATEREQUIRED,
|
||||||
|
this.dESCRIPTION,
|
||||||
|
this.fROMLOCATOR,
|
||||||
|
this.fROMROWNUM,
|
||||||
|
this.fROMSUBINVENTORYCODE,
|
||||||
|
this.iTEMCODE,
|
||||||
|
this.lINESTATUSDIS,
|
||||||
|
this.nOOFROWS,
|
||||||
|
this.oPERATINGUNITNAME,
|
||||||
|
this.oRGANIZATIONCODE,
|
||||||
|
this.oRGANIZATIONID,
|
||||||
|
this.oRGANIZATIONNAME,
|
||||||
|
this.qUANTITY,
|
||||||
|
this.rEQUESTNUMBER,
|
||||||
|
this.rOWNUM,
|
||||||
|
this.sHIPTOLOCATION,
|
||||||
|
this.sTATUSDATE,
|
||||||
|
this.tOLOCATOR,
|
||||||
|
this.tOROWNUM,
|
||||||
|
this.tOSUBINVENTORYCODE,
|
||||||
|
this.tRANSACTIONTYPENAME,
|
||||||
|
this.uNITOFMEASURE});
|
||||||
|
|
||||||
|
GetMoItemHistoryList.fromJson(Map<String, dynamic> json) {
|
||||||
|
dATEREQUIRED = json['DATE_REQUIRED'];
|
||||||
|
dESCRIPTION = json['DESCRIPTION'];
|
||||||
|
fROMLOCATOR = json['FROM_LOCATOR'];
|
||||||
|
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||||
|
fROMSUBINVENTORYCODE = json['FROM_SUBINVENTORY_CODE'];
|
||||||
|
iTEMCODE = json['ITEM_CODE'];
|
||||||
|
lINESTATUSDIS = json['LINE_STATUS_DIS'];
|
||||||
|
nOOFROWS = json['NO_OF_ROWS'];
|
||||||
|
oPERATINGUNITNAME = json['OPERATING_UNIT_NAME'];
|
||||||
|
oRGANIZATIONCODE = json['ORGANIZATION_CODE'];
|
||||||
|
oRGANIZATIONID = json['ORGANIZATION_ID'];
|
||||||
|
oRGANIZATIONNAME = json['ORGANIZATION_NAME'];
|
||||||
|
qUANTITY = json['QUANTITY'];
|
||||||
|
rEQUESTNUMBER = json['REQUEST_NUMBER'];
|
||||||
|
rOWNUM = json['ROW_NUM'];
|
||||||
|
sHIPTOLOCATION = json['SHIP_TO_LOCATION'];
|
||||||
|
sTATUSDATE = json['STATUS_DATE'];
|
||||||
|
tOLOCATOR = json['TO_LOCATOR'];
|
||||||
|
tOROWNUM = json['TO_ROW_NUM'];
|
||||||
|
tOSUBINVENTORYCODE = json['TO_SUBINVENTORY_CODE'];
|
||||||
|
tRANSACTIONTYPENAME = json['TRANSACTION_TYPE_NAME'];
|
||||||
|
uNITOFMEASURE = json['UNIT_OF_MEASURE'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['DATE_REQUIRED'] = this.dATEREQUIRED;
|
||||||
|
data['DESCRIPTION'] = this.dESCRIPTION;
|
||||||
|
data['FROM_LOCATOR'] = this.fROMLOCATOR;
|
||||||
|
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||||
|
data['FROM_SUBINVENTORY_CODE'] = this.fROMSUBINVENTORYCODE;
|
||||||
|
data['ITEM_CODE'] = this.iTEMCODE;
|
||||||
|
data['LINE_STATUS_DIS'] = this.lINESTATUSDIS;
|
||||||
|
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||||
|
data['OPERATING_UNIT_NAME'] = this.oPERATINGUNITNAME;
|
||||||
|
data['ORGANIZATION_CODE'] = this.oRGANIZATIONCODE;
|
||||||
|
data['ORGANIZATION_ID'] = this.oRGANIZATIONID;
|
||||||
|
data['ORGANIZATION_NAME'] = this.oRGANIZATIONNAME;
|
||||||
|
data['QUANTITY'] = this.qUANTITY;
|
||||||
|
data['REQUEST_NUMBER'] = this.rEQUESTNUMBER;
|
||||||
|
data['ROW_NUM'] = this.rOWNUM;
|
||||||
|
data['SHIP_TO_LOCATION'] = this.sHIPTOLOCATION;
|
||||||
|
data['STATUS_DATE'] = this.sTATUSDATE;
|
||||||
|
data['TO_LOCATOR'] = this.tOLOCATOR;
|
||||||
|
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||||
|
data['TO_SUBINVENTORY_CODE'] = this.tOSUBINVENTORYCODE;
|
||||||
|
data['TRANSACTION_TYPE_NAME'] = this.tRANSACTIONTYPENAME;
|
||||||
|
data['UNIT_OF_MEASURE'] = this.uNITOFMEASURE;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,92 @@
|
|||||||
|
class GetPoItemHistoryList {
|
||||||
|
int? bALANCEQUANTITY;
|
||||||
|
int? bONUSQUANTITY;
|
||||||
|
String? bUYER;
|
||||||
|
String? cLOSEDCODE;
|
||||||
|
String? cREATIONDATE;
|
||||||
|
int? dISCOUNTPERCENTAGE;
|
||||||
|
int? fROMROWNUM;
|
||||||
|
int? iTEMID;
|
||||||
|
int? nETPRICE;
|
||||||
|
int? nOOFROWS;
|
||||||
|
String? oUNAME;
|
||||||
|
String? pONUMBER;
|
||||||
|
int? pURCHASEPRICE;
|
||||||
|
int? qUANTITYORDERED;
|
||||||
|
int? qUANTITYRECEIVED;
|
||||||
|
int? rEVISIONNUM;
|
||||||
|
int? rOWNUM;
|
||||||
|
String? sUPPLIER;
|
||||||
|
int? tOROWNUM;
|
||||||
|
String? uOM;
|
||||||
|
|
||||||
|
GetPoItemHistoryList(
|
||||||
|
{this.bALANCEQUANTITY,
|
||||||
|
this.bONUSQUANTITY,
|
||||||
|
this.bUYER,
|
||||||
|
this.cLOSEDCODE,
|
||||||
|
this.cREATIONDATE,
|
||||||
|
this.dISCOUNTPERCENTAGE,
|
||||||
|
this.fROMROWNUM,
|
||||||
|
this.iTEMID,
|
||||||
|
this.nETPRICE,
|
||||||
|
this.nOOFROWS,
|
||||||
|
this.oUNAME,
|
||||||
|
this.pONUMBER,
|
||||||
|
this.pURCHASEPRICE,
|
||||||
|
this.qUANTITYORDERED,
|
||||||
|
this.qUANTITYRECEIVED,
|
||||||
|
this.rEVISIONNUM,
|
||||||
|
this.rOWNUM,
|
||||||
|
this.sUPPLIER,
|
||||||
|
this.tOROWNUM,
|
||||||
|
this.uOM});
|
||||||
|
|
||||||
|
GetPoItemHistoryList.fromJson(Map<String, dynamic> json) {
|
||||||
|
bALANCEQUANTITY = json['BALANCE_QUANTITY'];
|
||||||
|
bONUSQUANTITY = json['BONUS_QUANTITY'];
|
||||||
|
bUYER = json['BUYER'];
|
||||||
|
cLOSEDCODE = json['CLOSED_CODE'];
|
||||||
|
cREATIONDATE = json['CREATION_DATE'];
|
||||||
|
dISCOUNTPERCENTAGE = json['DISCOUNT_PERCENTAGE'];
|
||||||
|
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||||
|
iTEMID = json['ITEM_ID'];
|
||||||
|
nETPRICE = json['NET_PRICE'];
|
||||||
|
nOOFROWS = json['NO_OF_ROWS'];
|
||||||
|
oUNAME = json['OU_NAME'];
|
||||||
|
pONUMBER = json['PO_NUMBER'];
|
||||||
|
pURCHASEPRICE = json['PURCHASE_PRICE'];
|
||||||
|
qUANTITYORDERED = json['QUANTITY_ORDERED'];
|
||||||
|
qUANTITYRECEIVED = json['QUANTITY_RECEIVED'];
|
||||||
|
rEVISIONNUM = json['REVISION_NUM'];
|
||||||
|
rOWNUM = json['ROW_NUM'];
|
||||||
|
sUPPLIER = json['SUPPLIER'];
|
||||||
|
tOROWNUM = json['TO_ROW_NUM'];
|
||||||
|
uOM = json['UOM'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['BALANCE_QUANTITY'] = this.bALANCEQUANTITY;
|
||||||
|
data['BONUS_QUANTITY'] = this.bONUSQUANTITY;
|
||||||
|
data['BUYER'] = this.bUYER;
|
||||||
|
data['CLOSED_CODE'] = this.cLOSEDCODE;
|
||||||
|
data['CREATION_DATE'] = this.cREATIONDATE;
|
||||||
|
data['DISCOUNT_PERCENTAGE'] = this.dISCOUNTPERCENTAGE;
|
||||||
|
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||||
|
data['ITEM_ID'] = this.iTEMID;
|
||||||
|
data['NET_PRICE'] = this.nETPRICE;
|
||||||
|
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||||
|
data['OU_NAME'] = this.oUNAME;
|
||||||
|
data['PO_NUMBER'] = this.pONUMBER;
|
||||||
|
data['PURCHASE_PRICE'] = this.pURCHASEPRICE;
|
||||||
|
data['QUANTITY_ORDERED'] = this.qUANTITYORDERED;
|
||||||
|
data['QUANTITY_RECEIVED'] = this.qUANTITYRECEIVED;
|
||||||
|
data['REVISION_NUM'] = this.rEVISIONNUM;
|
||||||
|
data['ROW_NUM'] = this.rOWNUM;
|
||||||
|
data['SUPPLIER'] = this.sUPPLIER;
|
||||||
|
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||||
|
data['UOM'] = this.uOM;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,242 @@
|
|||||||
|
|
||||||
|
class GetPoNotificationBodyList {
|
||||||
|
List<POHeader>? pOHeader;
|
||||||
|
List<POLines>? pOLines;
|
||||||
|
String? pINFORMATION;
|
||||||
|
String? pQUESTION;
|
||||||
|
|
||||||
|
GetPoNotificationBodyList(
|
||||||
|
{this.pOHeader, this.pOLines, this.pINFORMATION, this.pQUESTION});
|
||||||
|
|
||||||
|
GetPoNotificationBodyList.fromJson(Map<String, dynamic> json) {
|
||||||
|
if (json['POHeader'] != null) {
|
||||||
|
pOHeader = <POHeader>[];
|
||||||
|
json['POHeader'].forEach((v) {
|
||||||
|
pOHeader!.add(new POHeader.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (json['POLines'] != null) {
|
||||||
|
pOLines = <POLines>[];
|
||||||
|
json['POLines'].forEach((v) {
|
||||||
|
pOLines!.add(new POLines.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
pINFORMATION = json['P_INFORMATION'];
|
||||||
|
pQUESTION = json['P_QUESTION'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
if (this.pOHeader != null) {
|
||||||
|
data['POHeader'] = this.pOHeader!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
if (this.pOLines != null) {
|
||||||
|
data['POLines'] = this.pOLines!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
data['P_INFORMATION'] = this.pINFORMATION;
|
||||||
|
data['P_QUESTION'] = this.pQUESTION;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class POHeader {
|
||||||
|
String? bUYER;
|
||||||
|
String? cOMMENTS;
|
||||||
|
String? cREATIONDATE;
|
||||||
|
String? cURRENCYNAME;
|
||||||
|
int? cUSTOMDUTY;
|
||||||
|
int? dISCOUNTAMOUNT;
|
||||||
|
int? gROSSAMOUNT;
|
||||||
|
String? lOCCUR;
|
||||||
|
int? lOCCURTOTPOAMT;
|
||||||
|
int? oTHERCHARGES;
|
||||||
|
String? pAYMENTTERMS;
|
||||||
|
String? pONUMBER;
|
||||||
|
String? pREPARER;
|
||||||
|
String? qUOTATIONDATE;
|
||||||
|
String? qUOTATIONNUMBER;
|
||||||
|
int? sALESTAX;
|
||||||
|
int? sHIPHANDLE;
|
||||||
|
String? sHIPTOLOCATIONNAME;
|
||||||
|
int? tOTALPODISCOUNT;
|
||||||
|
int? tOTPOAMT;
|
||||||
|
String? tOTPOAMTWORD;
|
||||||
|
String? vENDORNAME;
|
||||||
|
String? vENDORSITECODE;
|
||||||
|
|
||||||
|
POHeader(
|
||||||
|
{this.bUYER,
|
||||||
|
this.cOMMENTS,
|
||||||
|
this.cREATIONDATE,
|
||||||
|
this.cURRENCYNAME,
|
||||||
|
this.cUSTOMDUTY,
|
||||||
|
this.dISCOUNTAMOUNT,
|
||||||
|
this.gROSSAMOUNT,
|
||||||
|
this.lOCCUR,
|
||||||
|
this.lOCCURTOTPOAMT,
|
||||||
|
this.oTHERCHARGES,
|
||||||
|
this.pAYMENTTERMS,
|
||||||
|
this.pONUMBER,
|
||||||
|
this.pREPARER,
|
||||||
|
this.qUOTATIONDATE,
|
||||||
|
this.qUOTATIONNUMBER,
|
||||||
|
this.sALESTAX,
|
||||||
|
this.sHIPHANDLE,
|
||||||
|
this.sHIPTOLOCATIONNAME,
|
||||||
|
this.tOTALPODISCOUNT,
|
||||||
|
this.tOTPOAMT,
|
||||||
|
this.tOTPOAMTWORD,
|
||||||
|
this.vENDORNAME,
|
||||||
|
this.vENDORSITECODE});
|
||||||
|
|
||||||
|
POHeader.fromJson(Map<String, dynamic> json) {
|
||||||
|
bUYER = json['BUYER'];
|
||||||
|
cOMMENTS = json['COMMENTS'];
|
||||||
|
cREATIONDATE = json['CREATION_DATE'];
|
||||||
|
cURRENCYNAME = json['CURRENCY_NAME'];
|
||||||
|
cUSTOMDUTY = json['CUSTOM_DUTY'];
|
||||||
|
dISCOUNTAMOUNT = json['DISCOUNT_AMOUNT'];
|
||||||
|
gROSSAMOUNT = json['GROSS_AMOUNT'];
|
||||||
|
lOCCUR = json['LOC_CUR'];
|
||||||
|
lOCCURTOTPOAMT = json['LOC_CUR_TOT_PO_AMT'];
|
||||||
|
oTHERCHARGES = json['OTHER_CHARGES'];
|
||||||
|
pAYMENTTERMS = json['PAYMENT_TERMS'];
|
||||||
|
pONUMBER = json['PO_NUMBER'];
|
||||||
|
pREPARER = json['PREPARER'];
|
||||||
|
qUOTATIONDATE = json['QUOTATION_DATE'];
|
||||||
|
qUOTATIONNUMBER = json['QUOTATION_NUMBER'];
|
||||||
|
sALESTAX = json['SALES_TAX'];
|
||||||
|
sHIPHANDLE = json['SHIP_HANDLE'];
|
||||||
|
sHIPTOLOCATIONNAME = json['SHIP_TO_LOCATION_NAME'];
|
||||||
|
tOTALPODISCOUNT = json['TOTAL_PO_DISCOUNT'];
|
||||||
|
tOTPOAMT = json['TOT_PO_AMT'];
|
||||||
|
tOTPOAMTWORD = json['TOT_PO_AMT_WORD'];
|
||||||
|
vENDORNAME = json['VENDOR_NAME'];
|
||||||
|
vENDORSITECODE = json['VENDOR_SITE_CODE'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['BUYER'] = this.bUYER;
|
||||||
|
data['COMMENTS'] = this.cOMMENTS;
|
||||||
|
data['CREATION_DATE'] = this.cREATIONDATE;
|
||||||
|
data['CURRENCY_NAME'] = this.cURRENCYNAME;
|
||||||
|
data['CUSTOM_DUTY'] = this.cUSTOMDUTY;
|
||||||
|
data['DISCOUNT_AMOUNT'] = this.dISCOUNTAMOUNT;
|
||||||
|
data['GROSS_AMOUNT'] = this.gROSSAMOUNT;
|
||||||
|
data['LOC_CUR'] = this.lOCCUR;
|
||||||
|
data['LOC_CUR_TOT_PO_AMT'] = this.lOCCURTOTPOAMT;
|
||||||
|
data['OTHER_CHARGES'] = this.oTHERCHARGES;
|
||||||
|
data['PAYMENT_TERMS'] = this.pAYMENTTERMS;
|
||||||
|
data['PO_NUMBER'] = this.pONUMBER;
|
||||||
|
data['PREPARER'] = this.pREPARER;
|
||||||
|
data['QUOTATION_DATE'] = this.qUOTATIONDATE;
|
||||||
|
data['QUOTATION_NUMBER'] = this.qUOTATIONNUMBER;
|
||||||
|
data['SALES_TAX'] = this.sALESTAX;
|
||||||
|
data['SHIP_HANDLE'] = this.sHIPHANDLE;
|
||||||
|
data['SHIP_TO_LOCATION_NAME'] = this.sHIPTOLOCATIONNAME;
|
||||||
|
data['TOTAL_PO_DISCOUNT'] = this.tOTALPODISCOUNT;
|
||||||
|
data['TOT_PO_AMT'] = this.tOTPOAMT;
|
||||||
|
data['TOT_PO_AMT_WORD'] = this.tOTPOAMTWORD;
|
||||||
|
data['VENDOR_NAME'] = this.vENDORNAME;
|
||||||
|
data['VENDOR_SITE_CODE'] = this.vENDORSITECODE;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class POLines {
|
||||||
|
String? dELIVERTOLOCATION;
|
||||||
|
int? fROMROWNUM;
|
||||||
|
String? iTEMCODE;
|
||||||
|
String? iTEMDESCRIPTION;
|
||||||
|
int? iTEMID;
|
||||||
|
int? lINEAMOUNT;
|
||||||
|
int? lINEDISCPERCENTAGE;
|
||||||
|
int? lINENUM;
|
||||||
|
String? lINETYPE;
|
||||||
|
String? mFG;
|
||||||
|
String? nEEDBYDATE;
|
||||||
|
int? nOOFROWS;
|
||||||
|
int? pOHEADERID;
|
||||||
|
String? pROMISEDDATE;
|
||||||
|
String? pRNUM;
|
||||||
|
int? qUANTITY;
|
||||||
|
String? rEQUESTOR;
|
||||||
|
int? rOWNUM;
|
||||||
|
int? tOROWNUM;
|
||||||
|
int? uNITPRICE;
|
||||||
|
String? uOM;
|
||||||
|
|
||||||
|
POLines(
|
||||||
|
{this.dELIVERTOLOCATION,
|
||||||
|
this.fROMROWNUM,
|
||||||
|
this.iTEMCODE,
|
||||||
|
this.iTEMDESCRIPTION,
|
||||||
|
this.iTEMID,
|
||||||
|
this.lINEAMOUNT,
|
||||||
|
this.lINEDISCPERCENTAGE,
|
||||||
|
this.lINENUM,
|
||||||
|
this.lINETYPE,
|
||||||
|
this.mFG,
|
||||||
|
this.nEEDBYDATE,
|
||||||
|
this.nOOFROWS,
|
||||||
|
this.pOHEADERID,
|
||||||
|
this.pROMISEDDATE,
|
||||||
|
this.pRNUM,
|
||||||
|
this.qUANTITY,
|
||||||
|
this.rEQUESTOR,
|
||||||
|
this.rOWNUM,
|
||||||
|
this.tOROWNUM,
|
||||||
|
this.uNITPRICE,
|
||||||
|
this.uOM});
|
||||||
|
|
||||||
|
POLines.fromJson(Map<String, dynamic> json) {
|
||||||
|
dELIVERTOLOCATION = json['DELIVER_TO_LOCATION'];
|
||||||
|
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||||
|
iTEMCODE = json['ITEM_CODE'];
|
||||||
|
iTEMDESCRIPTION = json['ITEM_DESCRIPTION'];
|
||||||
|
iTEMID = json['ITEM_ID'];
|
||||||
|
lINEAMOUNT = json['LINE_AMOUNT'];
|
||||||
|
lINEDISCPERCENTAGE = json['LINE_DISC_PERCENTAGE'];
|
||||||
|
lINENUM = json['LINE_NUM'];
|
||||||
|
lINETYPE = json['LINE_TYPE'];
|
||||||
|
mFG = json['MFG'];
|
||||||
|
nEEDBYDATE = json['NEED_BY_DATE'];
|
||||||
|
nOOFROWS = json['NO_OF_ROWS'];
|
||||||
|
pOHEADERID = json['PO_HEADER_ID'];
|
||||||
|
pROMISEDDATE = json['PROMISED_DATE'];
|
||||||
|
pRNUM = json['PR_NUM'];
|
||||||
|
qUANTITY = json['QUANTITY'];
|
||||||
|
rEQUESTOR = json['REQUESTOR'];
|
||||||
|
rOWNUM = json['ROW_NUM'];
|
||||||
|
tOROWNUM = json['TO_ROW_NUM'];
|
||||||
|
uNITPRICE = json['UNIT_PRICE'];
|
||||||
|
uOM = json['UOM'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['DELIVER_TO_LOCATION'] = this.dELIVERTOLOCATION;
|
||||||
|
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||||
|
data['ITEM_CODE'] = this.iTEMCODE;
|
||||||
|
data['ITEM_DESCRIPTION'] = this.iTEMDESCRIPTION;
|
||||||
|
data['ITEM_ID'] = this.iTEMID;
|
||||||
|
data['LINE_AMOUNT'] = this.lINEAMOUNT;
|
||||||
|
data['LINE_DISC_PERCENTAGE'] = this.lINEDISCPERCENTAGE;
|
||||||
|
data['LINE_NUM'] = this.lINENUM;
|
||||||
|
data['LINE_TYPE'] = this.lINETYPE;
|
||||||
|
data['MFG'] = this.mFG;
|
||||||
|
data['NEED_BY_DATE'] = this.nEEDBYDATE;
|
||||||
|
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||||
|
data['PO_HEADER_ID'] = this.pOHEADERID;
|
||||||
|
data['PROMISED_DATE'] = this.pROMISEDDATE;
|
||||||
|
data['PR_NUM'] = this.pRNUM;
|
||||||
|
data['QUANTITY'] = this.qUANTITY;
|
||||||
|
data['REQUESTOR'] = this.rEQUESTOR;
|
||||||
|
data['ROW_NUM'] = this.rOWNUM;
|
||||||
|
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||||
|
data['UNIT_PRICE'] = this.uNITPRICE;
|
||||||
|
data['UOM'] = this.uOM;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,84 @@
|
|||||||
|
class GetQuotationAnalysisList {
|
||||||
|
int? fROMROWNUM;
|
||||||
|
String? iTEMCODE;
|
||||||
|
String? iTEMDESC;
|
||||||
|
int? nOOFROWS;
|
||||||
|
String? qUOTBONUSQTY;
|
||||||
|
String? qUOTDELIVERYDATE;
|
||||||
|
int? qUOTLINETOTAL;
|
||||||
|
String? qUOTMFGPARTNUM;
|
||||||
|
String? qUOTNUM;
|
||||||
|
int? qUOTQTY;
|
||||||
|
int? qUOTUNITPRICE;
|
||||||
|
String? qUOTUOM;
|
||||||
|
String? rFQNUM;
|
||||||
|
int? rFQQTY;
|
||||||
|
String? rFQUOM;
|
||||||
|
int? rOWNUM;
|
||||||
|
int? tOROWNUM;
|
||||||
|
String? vENDORNAME;
|
||||||
|
|
||||||
|
GetQuotationAnalysisList(
|
||||||
|
{this.fROMROWNUM,
|
||||||
|
this.iTEMCODE,
|
||||||
|
this.iTEMDESC,
|
||||||
|
this.nOOFROWS,
|
||||||
|
this.qUOTBONUSQTY,
|
||||||
|
this.qUOTDELIVERYDATE,
|
||||||
|
this.qUOTLINETOTAL,
|
||||||
|
this.qUOTMFGPARTNUM,
|
||||||
|
this.qUOTNUM,
|
||||||
|
this.qUOTQTY,
|
||||||
|
this.qUOTUNITPRICE,
|
||||||
|
this.qUOTUOM,
|
||||||
|
this.rFQNUM,
|
||||||
|
this.rFQQTY,
|
||||||
|
this.rFQUOM,
|
||||||
|
this.rOWNUM,
|
||||||
|
this.tOROWNUM,
|
||||||
|
this.vENDORNAME});
|
||||||
|
|
||||||
|
GetQuotationAnalysisList.fromJson(Map<String, dynamic> json) {
|
||||||
|
fROMROWNUM = json['FROM_ROW_NUM'];
|
||||||
|
iTEMCODE = json['ITEM_CODE'];
|
||||||
|
iTEMDESC = json['ITEM_DESC'];
|
||||||
|
nOOFROWS = json['NO_OF_ROWS'];
|
||||||
|
qUOTBONUSQTY = json['QUOT_BONUS_QTY'];
|
||||||
|
qUOTDELIVERYDATE = json['QUOT_DELIVERY_DATE'];
|
||||||
|
qUOTLINETOTAL = json['QUOT_LINE_TOTAL'];
|
||||||
|
qUOTMFGPARTNUM = json['QUOT_MFG_PART_NUM'];
|
||||||
|
qUOTNUM = json['QUOT_NUM'];
|
||||||
|
qUOTQTY = json['QUOT_QTY'];
|
||||||
|
qUOTUNITPRICE = json['QUOT_UNIT_PRICE'];
|
||||||
|
qUOTUOM = json['QUOT_UOM'];
|
||||||
|
rFQNUM = json['RFQ_NUM'];
|
||||||
|
rFQQTY = json['RFQ_QTY'];
|
||||||
|
rFQUOM = json['RFQ_UOM'];
|
||||||
|
rOWNUM = json['ROW_NUM'];
|
||||||
|
tOROWNUM = json['TO_ROW_NUM'];
|
||||||
|
vENDORNAME = json['VENDOR_NAME'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['FROM_ROW_NUM'] = this.fROMROWNUM;
|
||||||
|
data['ITEM_CODE'] = this.iTEMCODE;
|
||||||
|
data['ITEM_DESC'] = this.iTEMDESC;
|
||||||
|
data['NO_OF_ROWS'] = this.nOOFROWS;
|
||||||
|
data['QUOT_BONUS_QTY'] = this.qUOTBONUSQTY;
|
||||||
|
data['QUOT_DELIVERY_DATE'] = this.qUOTDELIVERYDATE;
|
||||||
|
data['QUOT_LINE_TOTAL'] = this.qUOTLINETOTAL;
|
||||||
|
data['QUOT_MFG_PART_NUM'] = this.qUOTMFGPARTNUM;
|
||||||
|
data['QUOT_NUM'] = this.qUOTNUM;
|
||||||
|
data['QUOT_QTY'] = this.qUOTQTY;
|
||||||
|
data['QUOT_UNIT_PRICE'] = this.qUOTUNITPRICE;
|
||||||
|
data['QUOT_UOM'] = this.qUOTUOM;
|
||||||
|
data['RFQ_NUM'] = this.rFQNUM;
|
||||||
|
data['RFQ_QTY'] = this.rFQQTY;
|
||||||
|
data['RFQ_UOM'] = this.rFQUOM;
|
||||||
|
data['ROW_NUM'] = this.rOWNUM;
|
||||||
|
data['TO_ROW_NUM'] = this.tOROWNUM;
|
||||||
|
data['VENDOR_NAME'] = this.vENDORNAME;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
class NotificationAction {
|
||||||
|
String? pRETURNMSG;
|
||||||
|
String? pRETURNSTATUS;
|
||||||
|
|
||||||
|
NotificationAction({this.pRETURNMSG, this.pRETURNSTATUS});
|
||||||
|
|
||||||
|
NotificationAction.fromJson(Map<String, dynamic> json) {
|
||||||
|
pRETURNMSG = json['P_RETURN_MSG'];
|
||||||
|
pRETURNSTATUS = json['P_RETURN_STATUS'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['P_RETURN_MSG'] = this.pRETURNMSG;
|
||||||
|
data['P_RETURN_STATUS'] = this.pRETURNSTATUS;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,182 @@
|
|||||||
|
import 'package:easy_localization/src/public_ext.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/utils.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||||
|
import 'package:mohem_flutter_app/models/get_mo_Item_history_list_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/models/get_po_Item_history_list_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/models/get_quotation_analysis_list_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
|
||||||
|
|
||||||
|
class ItemHistoryScreenParams {
|
||||||
|
String? title;
|
||||||
|
bool isItemHistory;
|
||||||
|
bool isMO;
|
||||||
|
int? pItemId;
|
||||||
|
int? pPoHeaderId;
|
||||||
|
int? pOrgId;
|
||||||
|
|
||||||
|
ItemHistoryScreenParams({@required this.title, this.isItemHistory = true, this.isMO = true, this.pItemId, this.pPoHeaderId, this.pOrgId});
|
||||||
|
}
|
||||||
|
|
||||||
|
class ItemHistoryScreen extends StatefulWidget {
|
||||||
|
ItemHistoryScreen({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_ItemHistoryScreenState createState() {
|
||||||
|
return _ItemHistoryScreenState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ItemHistoryScreenState extends State<ItemHistoryScreen> {
|
||||||
|
ItemHistoryScreenParams? _screenParams;
|
||||||
|
|
||||||
|
List<GetMoItemHistoryList> moItemHistoryList = [];
|
||||||
|
List<GetPoItemHistoryList> poItemHistoryList = [];
|
||||||
|
List<GetQuotationAnalysisList> quotationAnalysisList = [];
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loadData() {
|
||||||
|
if (_screenParams == null) {
|
||||||
|
_screenParams = ModalRoute.of(context)!.settings.arguments as ItemHistoryScreenParams;
|
||||||
|
getDataFromApi();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void getDataFromApi() async {
|
||||||
|
try {
|
||||||
|
Utils.showLoading(context);
|
||||||
|
if (_screenParams!.isItemHistory) {
|
||||||
|
if (_screenParams!.isMO) {
|
||||||
|
moItemHistoryList = await WorkListApiClient().getMoItemHistory(_screenParams!.pItemId!, _screenParams!.pOrgId!);
|
||||||
|
} else {
|
||||||
|
poItemHistoryList = await WorkListApiClient().getPoItemHistory(_screenParams!.pItemId!);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
quotationAnalysisList = await WorkListApiClient().getQuotationAnalysis(_screenParams!.pItemId!, _screenParams!.pPoHeaderId!);
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils.hideLoading(context);
|
||||||
|
setState(() {});
|
||||||
|
} catch (ex) {
|
||||||
|
Utils.hideLoading(context);
|
||||||
|
Utils.handleException(ex, context, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
loadData();
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBarWidget(context, title: _screenParams?.title ?? ""),
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
body: ListView(
|
||||||
|
padding: const EdgeInsets.all(21),
|
||||||
|
physics: const BouncingScrollPhysics(),
|
||||||
|
children: [
|
||||||
|
if (moItemHistoryList.isNotEmpty) loadMoItemHistoryData(),
|
||||||
|
if (poItemHistoryList.isNotEmpty) loadPoItemHistoryData(),
|
||||||
|
if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData()
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget loadMoItemHistoryData() {
|
||||||
|
return ListView.separated(
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
itemBuilder: (cxt, index) => Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
ItemDetailView(LocaleKeys.requestNumber.tr(), moItemHistoryList[index].rEQUESTNUMBER ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.uom.tr(), moItemHistoryList[index].uNITOFMEASURE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quantity.tr(), moItemHistoryList[index].qUANTITY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.dateRequired.tr(), moItemHistoryList[index].dATEREQUIRED ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.lineStatus.tr(), moItemHistoryList[index].lINESTATUSDIS ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.statusDate.tr(), moItemHistoryList[index].sTATUSDATE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.transactionType.tr(), moItemHistoryList[index].tRANSACTIONTYPENAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.organization.tr(), moItemHistoryList[index].oRGANIZATIONNAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.operatingCode.tr(), moItemHistoryList[index].oRGANIZATIONCODE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.operatingUnit.tr(), moItemHistoryList[index].oPERATINGUNITNAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.fromSubInventory.tr(), moItemHistoryList[index].fROMSUBINVENTORYCODE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.fromLocator.tr(), moItemHistoryList[index].fROMLOCATOR ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.toSubInventory.tr(), moItemHistoryList[index].tOSUBINVENTORYCODE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.toLocator.tr(), moItemHistoryList[index].tOLOCATOR ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.shipToLocation.tr(), moItemHistoryList[index].sHIPTOLOCATION ?? ""),
|
||||||
|
],
|
||||||
|
).objectContainerView(),
|
||||||
|
separatorBuilder: (cxt, index) => 12.height,
|
||||||
|
itemCount: moItemHistoryList.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget loadPoItemHistoryData() {
|
||||||
|
return ListView.separated(
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
itemBuilder: (cxt, index) => Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
ItemDetailView(LocaleKeys.operatingUnit.tr(), poItemHistoryList[index].oUNAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.poNumber.tr(), poItemHistoryList[index].pONUMBER ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.revision.tr(), poItemHistoryList[index].rEVISIONNUM?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.creationDate.tr(), poItemHistoryList[index].cREATIONDATE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.supplier.tr(), poItemHistoryList[index].sUPPLIER ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.buyer.tr(), poItemHistoryList[index].bUYER ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.uom.tr(), poItemHistoryList[index].uOM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quantityOrdered.tr(), poItemHistoryList[index].qUANTITYORDERED?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quantityReceived.tr(), poItemHistoryList[index].qUANTITYRECEIVED?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.bonusQuantity.tr(), poItemHistoryList[index].bONUSQUANTITY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.purchasePrice.tr(), poItemHistoryList[index].pURCHASEPRICE?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.discountPer.tr(), poItemHistoryList[index].dISCOUNTPERCENTAGE?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.balanceQuantity.tr(), poItemHistoryList[index].bALANCEQUANTITY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.netPrice.tr(), poItemHistoryList[index].nETPRICE?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.closureStatus.tr(), poItemHistoryList[index].cLOSEDCODE ?? ""),
|
||||||
|
],
|
||||||
|
).objectContainerView(),
|
||||||
|
separatorBuilder: (cxt, index) => 12.height,
|
||||||
|
itemCount: poItemHistoryList.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget loadQuotationAnalysisData() {
|
||||||
|
return ListView.separated(
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
itemBuilder: (cxt, index) => Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
ItemDetailView(LocaleKeys.quotationNumber.tr(), quotationAnalysisList[index].qUOTNUM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.vendorName.tr(), quotationAnalysisList[index].vENDORNAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.itemCode.tr(), quotationAnalysisList[index].iTEMCODE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.description.tr(), quotationAnalysisList[index].iTEMDESC ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationQty.tr(), quotationAnalysisList[index].qUOTQTY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationUOM.tr(), quotationAnalysisList[index].qUOTUOM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationNetPrice.tr(), quotationAnalysisList[index].qUOTUNITPRICE?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationLineTotal.tr(), quotationAnalysisList[index].qUOTLINETOTAL?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationBonusQuantity.tr(), quotationAnalysisList[index].qUOTBONUSQTY ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationDeliveryDate.tr(), quotationAnalysisList[index].qUOTDELIVERYDATE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quotationMFGPartNumber.tr(), quotationAnalysisList[index].qUOTMFGPARTNUM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.rfqNumber.tr(), quotationAnalysisList[index].rFQNUM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.rfqQty.tr(), quotationAnalysisList[index].rFQQTY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.rfqUOM.tr(), quotationAnalysisList[index].rFQUOM ?? ""),
|
||||||
|
],
|
||||||
|
).objectContainerView(title: "${quotationAnalysisList[index].iTEMCODE}-${quotationAnalysisList[index].iTEMDESC}" ?? ""),
|
||||||
|
separatorBuilder: (cxt, index) => 12.height,
|
||||||
|
itemCount: quotationAnalysisList.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,86 +1,115 @@
|
|||||||
|
import 'package:easy_localization/src/public_ext.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:mohem_flutter_app/classes/colors.dart';
|
import 'package:mohem_flutter_app/config/routes.dart';
|
||||||
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||||
|
import 'package:mohem_flutter_app/models/get_mo_notification_body_list_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/models/get_po_notification_body_list_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
|
||||||
|
|
||||||
class RequestFragment extends StatefulWidget {
|
class RequestFragment extends StatelessWidget {
|
||||||
@override
|
final List<GetMoNotificationBodyList> moNotificationBodyList;
|
||||||
State<RequestFragment> createState() => _RequestFragmentState();
|
final List<POLines> poLinesList;
|
||||||
}
|
|
||||||
|
|
||||||
class _RequestFragmentState extends State<RequestFragment> {
|
RequestFragment({Key? key, this.moNotificationBodyList = const <GetMoNotificationBodyList>[], this.poLinesList = const <POLines>[]}) : super(key: key);
|
||||||
bool isOpened = false;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return ListView(
|
||||||
width: double.infinity,
|
physics: const BouncingScrollPhysics(),
|
||||||
height: double.infinity,
|
padding: const EdgeInsets.all(21),
|
||||||
child: Column(
|
children: [
|
||||||
children: [
|
if (moNotificationBodyList.isNotEmpty) moNotificationDataView(),
|
||||||
Container(
|
if (poLinesList.isNotEmpty) poLinesDataView(),
|
||||||
width: double.infinity,
|
],
|
||||||
decoration: BoxDecoration(
|
);
|
||||||
color: Colors.white,
|
}
|
||||||
borderRadius: BorderRadius.circular(15),
|
|
||||||
boxShadow: [
|
Widget poLinesDataView() {
|
||||||
BoxShadow(
|
return ListView.separated(
|
||||||
color: const Color(0xff000000).withOpacity(.05),
|
shrinkWrap: true,
|
||||||
blurRadius: 26,
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
offset: const Offset(0, -3),
|
itemBuilder: (cxt, index) => Column(
|
||||||
),
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
],
|
mainAxisSize: MainAxisSize.min,
|
||||||
),
|
|
||||||
margin: EdgeInsets.all(21),
|
|
||||||
padding: EdgeInsets.only(top: 21, bottom: 21, right: 16, left: 16),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
children: [
|
||||||
|
ItemDetailView(LocaleKeys.code.tr(), poLinesList[index].iTEMCODE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.mfg.tr(), poLinesList[index].uOM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.lineType.tr(), poLinesList[index].qUANTITY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.unit.tr(), poLinesList[index].uOM ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.price.tr(), poLinesList[index].uNITPRICE?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.lineAmount.tr(), poLinesList[index].lINEAMOUNT?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.quantity.tr(), poLinesList[index].qUANTITY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.lineDiscount.tr(), poLinesList[index].lINEDISCPERCENTAGE?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.needByDate.tr(), poLinesList[index].nEEDBYDATE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.promisedDate.tr(), poLinesList[index].pROMISEDDATE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.deliverToLocation.tr(), poLinesList[index].dELIVERTOLOCATION ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.requisitionNumber.tr(), poLinesList[index].rEQUESTOR ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.requester.tr(), poLinesList[index].pRNUM ?? ""),
|
||||||
|
12.height,
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
DefaultButton(LocaleKeys.itemHistory.tr(), () {
|
||||||
child: "Hardware Mobility 161 Messenger".toText16(),
|
Navigator.pushNamed(
|
||||||
),
|
cxt,
|
||||||
Icon(Icons.keyboard_arrow_down_rounded),
|
AppRoutes.itemHistory,
|
||||||
|
arguments: ItemHistoryScreenParams(title: LocaleKeys.itemHistory.tr(), isMO: false, pItemId: poLinesList[index].iTEMID),
|
||||||
|
);
|
||||||
|
}).expanded,
|
||||||
|
12.width,
|
||||||
|
DefaultButton(LocaleKeys.quotationAnalysis.tr(), () {
|
||||||
|
Navigator.pushNamed(
|
||||||
|
cxt,
|
||||||
|
AppRoutes.itemHistory,
|
||||||
|
arguments: ItemHistoryScreenParams(
|
||||||
|
isItemHistory: false, isMO: false, title: LocaleKeys.quotationAnalysis.tr(), pItemId: poLinesList[index].iTEMID, pPoHeaderId: poLinesList[index].pOHEADERID),
|
||||||
|
);
|
||||||
|
}).expanded,
|
||||||
],
|
],
|
||||||
),
|
)
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
12.height,
|
|
||||||
showItem("Code:", "3188000067"),
|
|
||||||
showItem("Quantity:", "1"),
|
|
||||||
showItem("Line Status:", "Pending Approval"),
|
|
||||||
showItem("Transection Type:", "Move Order Issue:"),
|
|
||||||
showItem("Organization Code:", "SWD"),
|
|
||||||
showItem("From Subinventory:", "SWD_MSPS"),
|
|
||||||
showItem("To Subinventory:", "SWD_MSPS"),
|
|
||||||
showItem("Ship To Location :", "SWD 11206-E.R. (Emergency Room)"),
|
|
||||||
showItem("Unit:", "Each"),
|
|
||||||
showItem("Date Required:", "12/23/2019 4:54:04 PM"),
|
|
||||||
showItem("Status Date:", "12/23/2019 4:54:04 PM"),
|
|
||||||
showItem("Operation Unit:", "Sehat Al Sewedi"),
|
|
||||||
showItem("Organization:", "Sehat Al Sewedi"),
|
|
||||||
showItem("From Locator:", "-"),
|
|
||||||
showItem("To Locator :", "-"),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
).objectContainerView(title: poLinesList[index].iTEMDESCRIPTION!),
|
||||||
),
|
separatorBuilder: (cxt, index) => 12.height,
|
||||||
],
|
itemCount: poLinesList.length);
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget showItem(String title, String value) {
|
Widget moNotificationDataView() {
|
||||||
return Padding(
|
return ListView.separated(
|
||||||
padding: const EdgeInsets.only(top: 2, bottom: 2),
|
shrinkWrap: true,
|
||||||
child: Row(
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
children: [
|
itemBuilder: (cxt, index) => Column(
|
||||||
title.toText12(isBold: true),
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
6.width,
|
mainAxisSize: MainAxisSize.min,
|
||||||
title.toText12(isBold: false, color: MyColors.normalTextColor),
|
children: [
|
||||||
],
|
ItemDetailView(LocaleKeys.code.tr(), moNotificationBodyList[index].iTEMCODE ?? ""),
|
||||||
),
|
ItemDetailView(LocaleKeys.unit.tr(), moNotificationBodyList[index].uOM ?? ""),
|
||||||
);
|
ItemDetailView(LocaleKeys.quantity.tr(), moNotificationBodyList[index].qUANTITY?.toString() ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.dateRequired.tr(), moNotificationBodyList[index].dATEREQUIRED ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.lineStatus.tr(), moNotificationBodyList[index].lINESTATUS ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.statusDate.tr(), moNotificationBodyList[index].sTATUSDATE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.transactionType.tr(), moNotificationBodyList[index].tRANSACTIONTYPENAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.operatingUnit.tr(), moNotificationBodyList[index].oPERATINGUNIT ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.organizationCode.tr(), moNotificationBodyList[index].oRGANIZATIONCODE ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.organization.tr(), moNotificationBodyList[index].oRGANIZATIONNAME ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.fromSubInventory.tr(), moNotificationBodyList[index].fROMSUBINVENTORY ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.fromLocator.tr(), moNotificationBodyList[index].fROMLOCATOR ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.toSubInventory.tr(), moNotificationBodyList[index].tOSUBINVENTORY ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.toLocator.tr(), moNotificationBodyList[index].tOLOCATOR ?? ""),
|
||||||
|
ItemDetailView(LocaleKeys.shipToLocator.tr(), moNotificationBodyList[index].sHIPTOLOCATION ?? ""),
|
||||||
|
12.height,
|
||||||
|
DefaultButton(LocaleKeys.itemHistory.tr(), () {
|
||||||
|
Navigator.pushNamed(
|
||||||
|
cxt,
|
||||||
|
AppRoutes.itemHistory,
|
||||||
|
arguments: ItemHistoryScreenParams(title: LocaleKeys.itemHistory.tr(), pItemId: moNotificationBodyList[index].iTEMID, pOrgId: moNotificationBodyList[index].oRGID),
|
||||||
|
);
|
||||||
|
})
|
||||||
|
],
|
||||||
|
).objectContainerView(title: moNotificationBodyList[index].dESCRIPTION ?? ""),
|
||||||
|
separatorBuilder: (cxt, index) => 12.height,
|
||||||
|
itemCount: moNotificationBodyList.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,103 @@
|
|||||||
|
import 'package:easy_localization/src/public_ext.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||||
|
import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
||||||
|
import 'package:mohem_flutter_app/widgets/input_widget.dart';
|
||||||
|
|
||||||
|
class AcceptRejectInputDialog extends StatelessWidget {
|
||||||
|
final String? title;
|
||||||
|
final String? message;
|
||||||
|
final String? okTitle;
|
||||||
|
final NotificationGetRespondAttributesList? notificationGetRespond;
|
||||||
|
final Function(String) onTap;
|
||||||
|
|
||||||
|
AcceptRejectInputDialog({Key? key, this.title, @required this.message, this.okTitle, required this.onTap, this.notificationGetRespond}) : super(key: key);
|
||||||
|
|
||||||
|
String note = "";
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Dialog(
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
shape: const RoundedRectangleBorder(),
|
||||||
|
insetPadding: const EdgeInsets.only(left: 21, right: 21),
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 20, right: 20, top: 18, bottom: 28),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 16.0),
|
||||||
|
child: Text(
|
||||||
|
title ?? LocaleKeys.confirm.tr(),
|
||||||
|
style: const TextStyle(fontSize: 24, fontWeight: FontWeight.w600, color: Color(0xff2B353E), height: 35 / 24, letterSpacing: -0.96),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
icon: const Icon(Icons.close),
|
||||||
|
color: const Color(0xff2B353E),
|
||||||
|
constraints: const BoxConstraints(),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
message ?? "",
|
||||||
|
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff808080), letterSpacing: -0.48),
|
||||||
|
),
|
||||||
|
if (notificationGetRespond != null) ...[
|
||||||
|
14.height,
|
||||||
|
InputWidget(
|
||||||
|
"Enter a Note",
|
||||||
|
notificationGetRespond!.attributeDisplayName!,
|
||||||
|
TextEditingController(),
|
||||||
|
isBackgroundEnable: true,
|
||||||
|
lines: 3,
|
||||||
|
onChange: (String note) {
|
||||||
|
this.note = note;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
28.height,
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
DefaultButton(
|
||||||
|
LocaleKeys.cancel.tr(),
|
||||||
|
() => Navigator.pop(context),
|
||||||
|
colors: const [MyColors.lightGreyEAColor, MyColors.lightGreyEAColor],
|
||||||
|
textColor: MyColors.darkTextColor,
|
||||||
|
).expanded,
|
||||||
|
10.width,
|
||||||
|
DefaultButton(
|
||||||
|
LocaleKeys.ok.tr(),
|
||||||
|
() {
|
||||||
|
Navigator.pop(context);
|
||||||
|
onTap(note);
|
||||||
|
},
|
||||||
|
colors: const [
|
||||||
|
Color(0xff28C884),
|
||||||
|
Color(0xff1BB271),
|
||||||
|
],
|
||||||
|
).expanded,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||||
|
|
||||||
|
class ItemDetailView extends StatelessWidget {
|
||||||
|
final String title;
|
||||||
|
final String value;
|
||||||
|
const ItemDetailView(this.title, this.value, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
"$title:".toText12(isBold: true, color: const Color(0xff2D3238)),
|
||||||
|
6.width,
|
||||||
|
(value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor).expanded,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue