207 lines
8.1 KiB
Go
207 lines
8.1 KiB
Go
package app
|
|
|
|
import (
|
|
"database/sql"
|
|
"time"
|
|
|
|
"code.tnxs.net/taxnexus/lib/api/ops/ops_models"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// UnMarshalPurchaseOrder decodes swagger to first class object
|
|
func UnMarshalPurchaseOrder(s *ops_models.PurchaseOrder) (*PurchaseOrder, error) { //nolint:funlen // big object
|
|
if s.ID == "" {
|
|
s.ID = uuid.New().String()
|
|
}
|
|
var items []*PurchaseOrderItem
|
|
if s.Items != nil {
|
|
items = []*PurchaseOrderItem{}
|
|
for _, itm := range s.Items {
|
|
items = append(items, UnMarshalPurchaseOrderItem(itm))
|
|
}
|
|
}
|
|
createdDate, e0 := time.Parse(dateTimeFormat, s.CreatedDate)
|
|
lastModifiedDate, e1 := time.Parse(dateTimeFormat, s.LastModifiedDate)
|
|
poDate, e2 := time.Parse(dateTimeFormat, s.PODate)
|
|
dateExpires, e3 := time.Parse(dateTimeFormat, s.DateExpires)
|
|
datePromised, e4 := time.Parse(dateTimeFormat, s.DatePromised)
|
|
dateRequested, e5 := time.Parse(dateTimeFormat, s.DateRequested)
|
|
expirationDate, e6 := time.Parse(dateTimeFormat, s.ExpirationDate)
|
|
shipDate, e7 := time.Parse(dateTimeFormat, s.ShipDate)
|
|
dueDate, e8 := time.Parse(dateTimeFormat, s.DueDate)
|
|
return &PurchaseOrder{
|
|
ID: s.ID,
|
|
AccountID: s.AccountID,
|
|
Amount: s.Amount,
|
|
BillingAddress: UnMarshalOpsAddress(s.BillingAddress),
|
|
BillingContactID: s.BillingContactID,
|
|
BusinessAddress: UnMarshalOpsAddress(s.BusinessAddress),
|
|
BusinessTax: s.BusinessTax,
|
|
CannabisTax: s.CannabisTax,
|
|
ContractID: s.ContractID,
|
|
CoordinateID: s.CoordinateID,
|
|
CreatedByID: s.CreatedByID,
|
|
CreditCardID: s.CreditCardID,
|
|
CustomerID: s.CustomerID,
|
|
Description: s.Description,
|
|
Discount: s.Discount,
|
|
DiscountAmount: s.DiscountAmount,
|
|
EndUserID: s.EndUserID,
|
|
EstimatedAmount: s.EstimatedAmount,
|
|
EstimatedBusinessTax: s.EstimatedBusinessTax,
|
|
EstimatedCannabisTax: s.EstimatedCannabisTax,
|
|
EstimatedDiscount: s.EstimatedDiscount,
|
|
EstimatedSalesTax: s.EstimatedSalesTax,
|
|
EstimatedSubtotal: s.EstimatedSubtotal,
|
|
IngestID: s.IngestID,
|
|
Items: items,
|
|
JobID: s.JobID,
|
|
LastModifiedByID: s.LastModifiedByID,
|
|
OpportunityID: s.OpportunityID,
|
|
OrderID: s.OrderID,
|
|
ParentFK: s.ParentFK,
|
|
PaymentTerms: s.PaymentTerms,
|
|
PeriodID: s.PeriodID,
|
|
PlaceGeoCode: s.PlaceGeoCode,
|
|
PONumber: s.PONumber,
|
|
Posted: s.Posted,
|
|
QuoteID: s.QuoteID,
|
|
Ref: s.Ref,
|
|
SalesRegulation: s.SalesRegulation,
|
|
SalesTax: s.SalesTax,
|
|
ServiceTerm: s.ServiceTerm,
|
|
ShippingAddress: UnMarshalOpsAddress(s.ShippingAddress),
|
|
ShippingContactID: s.ShippingContactID,
|
|
ShippingHandling: s.ShippingHandling,
|
|
ShippingSpecialInstructions: s.ShippingSpecialInstructions,
|
|
Status: s.Status,
|
|
Subtotal: s.Subtotal,
|
|
TelecomTax: s.TelecomTax,
|
|
TemplateID: s.TemplateID,
|
|
TenantID: s.TenantID,
|
|
TotalID: s.TotalID,
|
|
Type: s.Type,
|
|
VendorID: s.VendorID,
|
|
VendorQuoteNumber: s.VendorQuoteNumber,
|
|
CreatedDate: sql.NullTime{
|
|
Time: createdDate,
|
|
Valid: e0 == nil,
|
|
},
|
|
LastModifiedDate: sql.NullTime{
|
|
Time: lastModifiedDate,
|
|
Valid: e1 == nil,
|
|
},
|
|
PODate: sql.NullTime{
|
|
Time: poDate,
|
|
Valid: e2 == nil,
|
|
},
|
|
DateExpires: sql.NullTime{
|
|
Time: dateExpires,
|
|
Valid: e3 == nil,
|
|
},
|
|
DatePromised: sql.NullTime{
|
|
Time: datePromised,
|
|
Valid: e4 == nil,
|
|
},
|
|
DateRequested: sql.NullTime{
|
|
Time: dateRequested,
|
|
Valid: e5 == nil,
|
|
},
|
|
ExpirationDate: sql.NullTime{
|
|
Time: expirationDate,
|
|
Valid: e6 == nil,
|
|
},
|
|
ShipDate: sql.NullTime{
|
|
Time: shipDate,
|
|
Valid: e7 == nil,
|
|
},
|
|
DueDate: sql.NullTime{
|
|
Time: dueDate,
|
|
Valid: e8 == nil,
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
// MarshalToSwagger encodes first class object
|
|
func (obj *PurchaseOrder) MarshalToSwagger() *ops_models.PurchaseOrder {
|
|
var items []*ops_models.PurchaseOrderItem
|
|
if obj.Items != nil {
|
|
items = []*ops_models.PurchaseOrderItem{}
|
|
for _, itm := range obj.Items {
|
|
items = append(items, itm.MarshalToSwagger())
|
|
}
|
|
}
|
|
var taxTransactions []*ops_models.TaxTransaction
|
|
if obj.TaxTransactions != nil {
|
|
taxTransactions = []*ops_models.TaxTransaction{}
|
|
for _, txn := range obj.TaxTransactions {
|
|
taxTransactions = append(taxTransactions, txn.MarshalToSwagger())
|
|
}
|
|
}
|
|
return &ops_models.PurchaseOrder{
|
|
ID: obj.ID,
|
|
AccountID: obj.AccountID,
|
|
Amount: obj.Amount,
|
|
BillingAddress: obj.BillingAddress.MarshalToOps(),
|
|
BillingContactID: obj.BillingContactID,
|
|
BusinessAddress: obj.BusinessAddress.MarshalToOps(),
|
|
BusinessTax: obj.BusinessTax,
|
|
CannabisTax: obj.CannabisTax,
|
|
ContractID: obj.ContractID,
|
|
CoordinateID: obj.CoordinateID,
|
|
CreatedByID: obj.CreatedByID,
|
|
CreatedDate: obj.CreatedDate.Time.Format(dateTimeFormat),
|
|
CreditCardID: obj.CreditCardID,
|
|
CustomerID: obj.CustomerID,
|
|
DateExpires: obj.DateExpires.Time.Format(dateTimeFormat),
|
|
DatePromised: obj.DatePromised.Time.Format(dateTimeFormat),
|
|
DateRequested: obj.DateRequested.Time.Format(dateTimeFormat),
|
|
Description: obj.Description,
|
|
Discount: obj.Discount,
|
|
DiscountAmount: obj.DiscountAmount,
|
|
DueDate: obj.DueDate.Time.Format(dateTimeFormat),
|
|
EndUserID: obj.EndUserID,
|
|
EstimatedAmount: obj.EstimatedAmount,
|
|
EstimatedBusinessTax: obj.EstimatedBusinessTax,
|
|
EstimatedCannabisTax: obj.EstimatedCannabisTax,
|
|
EstimatedDiscount: obj.EstimatedDiscount,
|
|
EstimatedSalesTax: obj.EstimatedSalesTax,
|
|
EstimatedSubtotal: obj.EstimatedSubtotal,
|
|
ExpirationDate: obj.ExpirationDate.Time.Format(dateTimeFormat),
|
|
IngestID: obj.IngestID,
|
|
Items: items,
|
|
JobID: obj.JobID,
|
|
LastModifiedByID: obj.LastModifiedByID,
|
|
LastModifiedDate: obj.LastModifiedDate.Time.Format(dateTimeFormat),
|
|
OpportunityID: obj.OpportunityID,
|
|
OrderID: obj.OrderID,
|
|
ParentFK: obj.ParentFK,
|
|
PaymentTerms: obj.PaymentTerms,
|
|
PeriodID: obj.PeriodID,
|
|
PlaceGeoCode: obj.PlaceGeoCode,
|
|
PODate: obj.PODate.Time.Format(dateTimeFormat),
|
|
PONumber: obj.PONumber,
|
|
Posted: obj.Posted,
|
|
QuoteID: obj.QuoteID,
|
|
Ref: obj.Ref,
|
|
SalesRegulation: obj.SalesRegulation,
|
|
SalesTax: obj.SalesTax,
|
|
ServiceTerm: obj.ServiceTerm,
|
|
ShipDate: obj.ShipDate.Time.Format(dateTimeFormat),
|
|
ShippingAddress: obj.ShippingAddress.MarshalToOps(),
|
|
ShippingContactID: obj.ShippingContactID,
|
|
ShippingHandling: obj.ShippingHandling,
|
|
ShippingSpecialInstructions: obj.ShippingSpecialInstructions,
|
|
Status: obj.Status,
|
|
Subtotal: obj.Subtotal,
|
|
TaxTransactions: taxTransactions,
|
|
TelecomTax: obj.TelecomTax,
|
|
TemplateID: obj.TemplateID,
|
|
Total: obj.Total.MarshalToSwagger(),
|
|
TotalID: obj.TotalID,
|
|
Type: obj.Type,
|
|
VendorID: obj.VendorID,
|
|
VendorQuoteNumber: obj.VendorQuoteNumber,
|
|
}
|
|
}
|