DynamicsURL/api/services/SalesOrderChargesServiceGroup/SalesOrderChargesService/SalesOrderCharges
{
"SalesOrderCharges": [
{
"SalesHeaderCharges": [
{
"DataAreaId": "100",
"SalesId": "1000000499",
"ChargeLineNum": "13.00",
"ChargeCode": "XYZ",
"Amount": "25.50"
},
{
"DataAreaId": "100",
"SalesId": "1000000499",
"ChargeLineNum": "14.00",
"ChargeCode": "ABC",
"Amount": "35.50"
}
],
"SalesLineCharges": [
{
"DataAreaId": "100",
"SalesId": "1000000499",
"LineNum": "1.00",
"ChargeLineNum": "14.00",
"ChargeCode": "XYZ",
"Amount": "25.50"
},
{
"DataAreaId": "100",
"SalesId": "1000000499",
"ChargeLineNum": "12.00",
"LineNum": "2.00",
"ChargeCode": "ABC",
"Amount": "15.50"
}
]
}
]
}
/// <summary>
/// This class is the data contract class for the <c>SalesLineChargesContract</c> service.
/// </summary>
[DataContract]
class SalesHeaderChargesContract
{
SalesId salesId;
DataAreaId dataAreaId;
MarkupCode chargeCode;
MarkupFixedAmount amount;
LineNum chargesLineNum;
[DataMember("SalesId")]
public SalesId parmSalesId(salesId _salesId = salesId)
{
salesId = _salesId;
return salesId;
}
[DataMember("DataAreaId")]
public DataAreaId parmDataAreaId(DataAreaId _dataAreaId = dataAreaId)
{
dataAreaId = _dataAreaId;
return dataAreaId;
}
[DataMember("ChargesLineNum")]
public LineNum parmChargesLineNum(LineNum _chargesLineNum = chargesLineNum)
{
chargesLineNum = _chargesLineNum;
return chargesLineNum;
}
[DataMember("ChargeCode")]
public MarkupCode parmChargeCode(MarkupCode _chargeCode = chargeCode)
{
chargeCode = _chargeCode;
return chargeCode;
}
[DataMember("Amount")]
public MarkupFixedAmount parmAmount(MarkupFixedAmount _amount = amount)
{
amount = _amount;
return amount;
}
}
/// <summary>
/// Service class to sales line charges.
/// </summary>
[SysEntryPointAttribute(true)]
class SalesHeaderChargesService
{
str ret = 'success';
boolean errors;
/// <summary>
/// Method to create sales line charges.
/// </summary>
/// <param name = "_contract">SalesLineChargesContract</param>
/// <returns>Message to users</returns>
public str createChargesheader(SalesHeaderChargesContract line)
{
try
{
CompanyInfo companyInfo = CompanyInfo::findDataArea(line.parmDataAreaId());
if(companyInfo)
{
changecompany(companyInfo.DataArea)
{
SalesTable salesTable = SalesTable::find(line.parmSalesId(),true);
if (SalesTable.recid)
{
MarkupTrans markUpTrans;
MarkupTable markupTable;
markupTable = markupTable::find(MarkupModuleType::Cust,line.parmChargeCode());
if (markupTable.recid)
{
markUpTrans.initFromSalesTable(SalesTable);//Line number 2181 [this.TransTableId = salesLine.TableId;] in this initFromSalesLine() method is returning 1426 for TransTableId
markUpTrans.TransTableId = tableNum(SalesTable);//tableNum(SalesLine) returns the expected 3071 for TransTableId;
markUpTrans.initFromMarkupTable(markupTable);
markUpTrans.initvalue();
markUpTrans.Linenum = line.parmChargesLineNum();
markUpTrans.Value = line.parmAmount();
markUpTrans.insert();
ttsbegin;
SalesTable.update();
ttscommit;
ret = strFmt("@:ChargeCodeSuccess",line.parmChargeCode(),line.parmSalesId());
}
else
{
throw Error(strFmt("@:ChargeCodeValidation",line.parmChargeCode()));
}
}
else
{
throw Error(strFmt("@:SalesLineValidation",line.parmSalesId()));
}
}
}
else
{
throw Error(strFmt("@HFG:HFGDataAreaIdInvalid",line.parmDataAreaId()));
}
}
catch
{
errors = true;
}
catch(Exception::Error)
{
errors = true;
}
if(errors)
{
throw Error(SalesHeaderChargesService::getError());
}
else
{
return ret;
}
return ret;
}
/// <summary>
/// Convert infolog from container to string.
/// </summary>
/// <param name = "_logText">InfologData</param>
/// <returns>Error message</returns>
private static str getError()
{
SysInfologEnumerator enumerator;
SysInfologMessageStruct msgStruct;
Exception exception;
str error;
enumerator = SysInfologEnumerator::newData(infolog.cut());
while (enumerator.moveNext())
{
msgStruct = new SysInfologMessageStruct(enumerator.currentMessage());
exception = enumerator.currentException();
error = strfmt("%1 - %2", error, msgStruct.message());
}
return error;
}
}
/// <summary>
/// This class is the data contract class for the <c>SalesLineChargesContract</c> service.
/// </summary>
[DataContract]
class SalesLineChargesContract
{
SalesId salesId;
DataAreaId dataAreaId;
LineNum lineNum;
MarkupCode chargeCode;
MarkupFixedAmount amount;
LineNum chargesLineNum;
NameAlias readyToInvoice;
[DataMember("SalesId")]
public SalesId parmSalesId(salesId _salesId = salesId)
{
salesId = _salesId;
return salesId;
}
[DataMember("ReadyToInvoice")]
public NameAlias parmReadyToInvoice(NameAlias _readyToInvoice = readyToInvoice)
{
readyToInvoice = _readyToInvoice;
return readyToInvoice;
}
[DataMember("DataAreaId")]
public DataAreaId parmDataAreaId(DataAreaId _dataAreaId = dataAreaId)
{
dataAreaId = _dataAreaId;
return dataAreaId;
}
[DataMember("ChargesLineNum")]
public LineNum parmChargesLineNum(LineNum _chargesLineNum = chargesLineNum)
{
chargesLineNum = _chargesLineNum;
return chargesLineNum;
}
[DataMember("LineNum")]
public LineNum parmLineNum(LineNum _lineNum = lineNum)
{
lineNum = _lineNum;
return lineNum;
}
[DataMember("ChargeCode")]
public MarkupCode parmChargeCode(MarkupCode _chargeCode = chargeCode)
{
chargeCode = _chargeCode;
return chargeCode;
}
[DataMember("Amount")]
public MarkupFixedAmount parmAmount(MarkupFixedAmount _amount = amount)
{
amount = _amount;
return amount;
}
}
[DataContractAttribute('SalesOrderChargesContract')]
internal final class SalesOrderChargesContract
{
List SalesHeaderChargesList,SalesLineChargesList;
[DataMemberAttribute("SalesHeaderCharges"),
AifCollectionTypeAttribute("_SalesHeaderCharges",Types::Class, classStr( SalesHeaderChargesContract)),
AifCollectionTypeAttribute("return",Types::Class, classStr( SalesHeaderChargesContract))]
public List parmSalesHeaderChargesList(List _SalesHeaderCharges = SalesHeaderChargesList)
{
SalesHeaderChargesList = _SalesHeaderCharges;
return SalesHeaderChargesList;
}
[DataMemberAttribute("SalesLineCharges"),
AifCollectionTypeAttribute("_SalesLineCharges",Types::Class, classStr( SalesLineChargesContract)),
AifCollectionTypeAttribute("return",Types::Class, classStr( SalesLineChargesContract))]
public List parmSalesLineChargesList(List _SalesLineCharges = SalesLineChargesList)
{
SalesLineChargesList = _SalesLineCharges;
return SalesLineChargesList;
}
}
[SysEntryPointAttribute(true)]
class SalesOrderChargesService
{
[AifCollectionTypeAttribute('SalesOrderCharges', Types::Class, classStr(SalesOrderChargesContract))]
public str processCharges(List SalesOrderCharges)
{
ListEnumerator orderEnumerator = SalesOrderCharges.getEnumerator();
SalesLineChargesService lineChargesService = new SalesLineChargesService();
SalesHeaderChargesService headerChargesService = new SalesHeaderChargesService();
SalesLineChargesContract lineChargesContract;
SalesHeaderChargesContract headerChargesContract;
while(orderEnumerator.moveNext())
{
SalesOrderChargesContract SalesOrderChargesContract = orderEnumerator.current();
list lineContract = SalesOrderChargesContract.parmSalesLineChargesList();
list headerContract = SalesOrderChargesContract.parmSalesHeaderChargesList();
if (lineContract)
{
ListEnumerator lineContractEnumerator = lineContract.getEnumerator();
if (lineContractEnumerator)
{
while(lineContractEnumerator.moveNext())
{
lineChargesContract = lineContractEnumerator.current();
lineChargesService.createChargesLines(lineChargesContract);
}
}
}
if (headerContract)
{
ListEnumerator headerContractEnumerator = headerContract.getEnumerator();
if (headerContractEnumerator)
{
while(headerContractEnumerator.moveNext())
{
headerChargesContract = headerContractEnumerator.current();
headerChargesService.createChargesheader(headerChargesContract);
}
}
}
}
return "Sales order charges created succesfully.";
}
}
No comments:
Post a Comment