Trendsic Platform Service

<back to all web services

PurchaseOrderCreateRequest

Requires Authentication
The following routes are available for this service:
POST,OPTIONS/v1/projects/{ProjectID}/purchase-orders
import 'package:servicestack/servicestack.dart';

class PurchaseOrderLine implements IConvertible
{
    int? PurchaseOrderLineID;
    int? PurchaseOrderID;
    int? MaterialID;
    String? Description;
    String? Unit;
    double? Qty;
    double? UnitPrice;
    double? QtyReceived;
    String? CostCode;
    int? SortOrder;

    PurchaseOrderLine({this.PurchaseOrderLineID,this.PurchaseOrderID,this.MaterialID,this.Description,this.Unit,this.Qty,this.UnitPrice,this.QtyReceived,this.CostCode,this.SortOrder});
    PurchaseOrderLine.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PurchaseOrderLineID = json['PurchaseOrderLineID'];
        PurchaseOrderID = json['PurchaseOrderID'];
        MaterialID = json['MaterialID'];
        Description = json['Description'];
        Unit = json['Unit'];
        Qty = JsonConverters.toDouble(json['Qty']);
        UnitPrice = JsonConverters.toDouble(json['UnitPrice']);
        QtyReceived = JsonConverters.toDouble(json['QtyReceived']);
        CostCode = json['CostCode'];
        SortOrder = json['SortOrder'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PurchaseOrderLineID': PurchaseOrderLineID,
        'PurchaseOrderID': PurchaseOrderID,
        'MaterialID': MaterialID,
        'Description': Description,
        'Unit': Unit,
        'Qty': Qty,
        'UnitPrice': UnitPrice,
        'QtyReceived': QtyReceived,
        'CostCode': CostCode,
        'SortOrder': SortOrder
    };

    getTypeName() => "PurchaseOrderLine";
    TypeContext? context = _ctx;
}

class PurchaseOrder implements IConvertible
{
    int? PurchaseOrderID;
    String? PurchaseOrderUID;
    int? ProjectID;
    String? PONumber;
    String? Vendor;
    String? Status;
    double? AmountUSD;
    String? CostCode;
    DateTime? NeedByDate;
    String? Notes;
    DateTime? IssuedAt;
    DateTime? ReceivedAt;
    String? CreatedBy;
    DateTime? CreatedAt;
    DateTime? UpdatedAt;
    int? LineCount;
    String? FirstItem;
    int? DaysToNeed;
    List<PurchaseOrderLine>? Lines = [];

    PurchaseOrder({this.PurchaseOrderID,this.PurchaseOrderUID,this.ProjectID,this.PONumber,this.Vendor,this.Status,this.AmountUSD,this.CostCode,this.NeedByDate,this.Notes,this.IssuedAt,this.ReceivedAt,this.CreatedBy,this.CreatedAt,this.UpdatedAt,this.LineCount,this.FirstItem,this.DaysToNeed,this.Lines});
    PurchaseOrder.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PurchaseOrderID = json['PurchaseOrderID'];
        PurchaseOrderUID = json['PurchaseOrderUID'];
        ProjectID = json['ProjectID'];
        PONumber = json['PONumber'];
        Vendor = json['Vendor'];
        Status = json['Status'];
        AmountUSD = JsonConverters.toDouble(json['AmountUSD']);
        CostCode = json['CostCode'];
        NeedByDate = JsonConverters.fromJson(json['NeedByDate'],'DateTime',context!);
        Notes = json['Notes'];
        IssuedAt = JsonConverters.fromJson(json['IssuedAt'],'DateTime',context!);
        ReceivedAt = JsonConverters.fromJson(json['ReceivedAt'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        CreatedAt = JsonConverters.fromJson(json['CreatedAt'],'DateTime',context!);
        UpdatedAt = JsonConverters.fromJson(json['UpdatedAt'],'DateTime',context!);
        LineCount = json['LineCount'];
        FirstItem = json['FirstItem'];
        DaysToNeed = json['DaysToNeed'];
        Lines = JsonConverters.fromJson(json['Lines'],'List<PurchaseOrderLine>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PurchaseOrderID': PurchaseOrderID,
        'PurchaseOrderUID': PurchaseOrderUID,
        'ProjectID': ProjectID,
        'PONumber': PONumber,
        'Vendor': Vendor,
        'Status': Status,
        'AmountUSD': AmountUSD,
        'CostCode': CostCode,
        'NeedByDate': JsonConverters.toJson(NeedByDate,'DateTime',context!),
        'Notes': Notes,
        'IssuedAt': JsonConverters.toJson(IssuedAt,'DateTime',context!),
        'ReceivedAt': JsonConverters.toJson(ReceivedAt,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'CreatedAt': JsonConverters.toJson(CreatedAt,'DateTime',context!),
        'UpdatedAt': JsonConverters.toJson(UpdatedAt,'DateTime',context!),
        'LineCount': LineCount,
        'FirstItem': FirstItem,
        'DaysToNeed': DaysToNeed,
        'Lines': JsonConverters.toJson(Lines,'List<PurchaseOrderLine>',context!)
    };

    getTypeName() => "PurchaseOrder";
    TypeContext? context = _ctx;
}

class PurchaseOrderBuyoutSummary implements IConvertible
{
    int? ProjectID;
    double? MaterialBudget;
    double? Committed;
    double? Received;
    int? OpenPOs;
    int? LatePOs;
    int? POCount;
    double? RemainingBuyout;

    PurchaseOrderBuyoutSummary({this.ProjectID,this.MaterialBudget,this.Committed,this.Received,this.OpenPOs,this.LatePOs,this.POCount,this.RemainingBuyout});
    PurchaseOrderBuyoutSummary.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ProjectID = json['ProjectID'];
        MaterialBudget = JsonConverters.toDouble(json['MaterialBudget']);
        Committed = JsonConverters.toDouble(json['Committed']);
        Received = JsonConverters.toDouble(json['Received']);
        OpenPOs = json['OpenPOs'];
        LatePOs = json['LatePOs'];
        POCount = json['POCount'];
        RemainingBuyout = JsonConverters.toDouble(json['RemainingBuyout']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ProjectID': ProjectID,
        'MaterialBudget': MaterialBudget,
        'Committed': Committed,
        'Received': Received,
        'OpenPOs': OpenPOs,
        'LatePOs': LatePOs,
        'POCount': POCount,
        'RemainingBuyout': RemainingBuyout
    };

    getTypeName() => "PurchaseOrderBuyoutSummary";
    TypeContext? context = _ctx;
}

class PurchaseOrderResponse implements IConvertible
{
    ResponseStatus? ResponseStatus;
    PurchaseOrder? Order;
    PurchaseOrderBuyoutSummary? Summary;

    PurchaseOrderResponse({this.ResponseStatus,this.Order,this.Summary});
    PurchaseOrderResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        Order = JsonConverters.fromJson(json['Order'],'PurchaseOrder',context!);
        Summary = JsonConverters.fromJson(json['Summary'],'PurchaseOrderBuyoutSummary',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'Order': JsonConverters.toJson(Order,'PurchaseOrder',context!),
        'Summary': JsonConverters.toJson(Summary,'PurchaseOrderBuyoutSummary',context!)
    };

    getTypeName() => "PurchaseOrderResponse";
    TypeContext? context = _ctx;
}

class PurchaseOrderCreateRequest implements IConvertible
{
    int? ProjectID;
    String? PONumber;
    String? Vendor;
    String? CostCode;
    DateTime? NeedByDate;
    String? Notes;
    List<PurchaseOrderLine>? Lines = [];

    PurchaseOrderCreateRequest({this.ProjectID,this.PONumber,this.Vendor,this.CostCode,this.NeedByDate,this.Notes,this.Lines});
    PurchaseOrderCreateRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ProjectID = json['ProjectID'];
        PONumber = json['PONumber'];
        Vendor = json['Vendor'];
        CostCode = json['CostCode'];
        NeedByDate = JsonConverters.fromJson(json['NeedByDate'],'DateTime',context!);
        Notes = json['Notes'];
        Lines = JsonConverters.fromJson(json['Lines'],'List<PurchaseOrderLine>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ProjectID': ProjectID,
        'PONumber': PONumber,
        'Vendor': Vendor,
        'CostCode': CostCode,
        'NeedByDate': JsonConverters.toJson(NeedByDate,'DateTime',context!),
        'Notes': Notes,
        'Lines': JsonConverters.toJson(Lines,'List<PurchaseOrderLine>',context!)
    };

    getTypeName() => "PurchaseOrderCreateRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
    'PurchaseOrderLine': TypeInfo(TypeOf.Class, create:() => PurchaseOrderLine()),
    'PurchaseOrder': TypeInfo(TypeOf.Class, create:() => PurchaseOrder()),
    'List<PurchaseOrderLine>': TypeInfo(TypeOf.Class, create:() => <PurchaseOrderLine>[]),
    'PurchaseOrderBuyoutSummary': TypeInfo(TypeOf.Class, create:() => PurchaseOrderBuyoutSummary()),
    'PurchaseOrderResponse': TypeInfo(TypeOf.Class, create:() => PurchaseOrderResponse()),
    'PurchaseOrderCreateRequest': TypeInfo(TypeOf.Class, create:() => PurchaseOrderCreateRequest()),
});

Dart PurchaseOrderCreateRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /v1/projects/{ProjectID}/purchase-orders HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"ProjectID":0,"PONumber":"String","Vendor":"String","CostCode":"String","NeedByDate":"0001-01-01T00:00:00.0000000","Notes":"String","Lines":[{"PurchaseOrderLineID":0,"PurchaseOrderID":0,"MaterialID":0,"Description":"String","Unit":"String","Qty":0,"UnitPrice":0,"QtyReceived":0,"CostCode":"String","SortOrder":0}]}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"Order":{"PurchaseOrderID":0,"PurchaseOrderUID":"00000000000000000000000000000000","ProjectID":0,"PONumber":"String","Vendor":"String","Status":"String","AmountUSD":0,"CostCode":"String","NeedByDate":"0001-01-01T00:00:00.0000000","Notes":"String","IssuedAt":"0001-01-01T00:00:00.0000000","ReceivedAt":"0001-01-01T00:00:00.0000000","CreatedBy":"String","CreatedAt":"0001-01-01T00:00:00.0000000","UpdatedAt":"0001-01-01T00:00:00.0000000","LineCount":0,"FirstItem":"String","DaysToNeed":0,"Lines":[{"PurchaseOrderLineID":0,"PurchaseOrderID":0,"MaterialID":0,"Description":"String","Unit":"String","Qty":0,"UnitPrice":0,"QtyReceived":0,"CostCode":"String","SortOrder":0}]},"Summary":{"ProjectID":0,"MaterialBudget":0,"Committed":0,"Received":0,"OpenPOs":0,"LatePOs":0,"POCount":0,"RemainingBuyout":0}}