package models import ( "time" ) type Products struct { Productid int `json:"productid"` AppLocationid int `json:"applocationid" gorm:"column:applocationid"` Tenantid *int `json:"tenantid,omitempty"` Categoryid int `json:"categoryid"` Categoryname string `json:"categoryname" gorm:"->"` Subcategoryid *int `json:"subcategoryid,omitempty"` Subcategoryname string `json:"Subcategoryname" gorm:"->"` Catalogueid *int `json:"catalogueid,omitempty"` Addonid *int `json:"addonid,omitempty"` Discountid *int `json:"discountid,omitempty"` Pricingid *int `json:"pricingid,omitempty"` Productname *string `json:"productname,omitempty"` Productimage *string `json:"productimage,omitempty"` Productdesc *string `json:"productdesc,omitempty"` Productsku *string `json:"productsku,omitempty"` Brandid *int `json:"brandid,omitempty"` Productbrand *string `json:"productbrand,omitempty"` Productunit *string `json:"productunit,omitempty"` Unitvalue *string `json:"unitvalue,omitempty"` Toppicks *string `json:"toppicks,omitempty"` Productcost *float64 `json:"productcost,omitempty"` Taxamount *float64 `json:"taxamount,omitempty"` Taxpercent *float64 `json:"taxpercent,omitempty"` Producttax *int `json:"producttax" gorm:"default:0"` Productstock *int `json:"productstock" gorm:"default:0"` Productcombo *int `json:"productcombo" gorm:"default:0"` Variants int `json:"variants" gorm:"default:0"` Quantity int `json:"quantity"` Retailprice float64 `json:"retailprice,omitempty"` Diffprice float64 `json:"diffprice,omitempty"` Diffpercent float64 `json:"diffpercent,omitempty"` Othercost float64 `json:"othercost,omitempty"` Approve *int `json:"approve" gorm:"default:0"` Productstatus string `json:"productstatus" gorm:"default:available"` } type ProductCategory struct { Categoryid int `json:"categoryid"` Moduleid int `json:"moduleid"` Tenantid *int `json:"tenantid,omitempty"` Categorytypeid *int `json:"categorytypeid,omitempty"` Categoryname *string `json:"categoryname,omitempty"` Image *string `json:"image,omitempty"` Catalougecategoryid *int `json:"catalougecategoryid,omitempty"` Sortorder *int `json:"sortorder,omitempty"` Status string `json:"status"` Createdby *int `json:"createdby,omitempty"` Created time.Time `json:"created"` Updated time.Time `json:"updated"` } type Productstockstatement struct { Productid int `json:"productid"` Productname string `json:"productname"` Productimage string `json:"productimage"` Categoryid int `json:"categoryid"` Subcategoryid int `json:"subcategoryid"` Productunit string `json:"productunit"` Unitvalue string `json:"unitvalue"` Productcost float32 `json:"productcost"` Taxpercent float32 `json:"taxpercent"` Taxamount float32 `json:"taxamount"` Retailprice float32 `json:"retailprice"` Tenantid int `json:"tenantid"` Locationid int `json:"locationid"` Opening int `json:"opening"` Credit int `json:"credit"` Debit int `json:"debit"` Closing int `json:"closing"` } type Productcount struct { Total int `json:"total"` Available int `json:"available"` Outofstock int `json:"outofstock"` } type ProductSubCategory struct { Subcatid int `json:"subcatid"` Categoryid int `json:"categoryid,omitempty"` Tenantid int `json:"tenantid,omitempty"` Subcatname string `json:"subcatname,omitempty"` Image string `json:"image,omitempty"` Status string `json:"status,omitempty"` Sortorder int `json:"sortorder,omitempty"` Createdby int `json:"createdby,omitempty"` Created time.Time `json:"created,omitempty"` Updated time.Time `json:"updated,omitempty"` } // Struct to match the `productsubcategories` table type Subcategory struct { Subcategoryid int `json:"subcategoryid" gorm:"column:subcatid"` Subcategoryname string `json:"subcategoryname" gorm:"column:subcatname"` Categoryid int `json:"categoryid" gorm:"column:categoryid"` } // Response format type SubcategoryProductResponse struct { SubcategoryID int `json:"subcategoryid"` SubcategoryName string `json:"subcategoryname"` Products []Products `json:"products"` } type TenantInfo struct { Tenantid int `json:"tenantid"` Tenantname string `json:"tenantname"` Address string `json:"address"` Licenseno string `json:"licenseno"` Primaryemail string `json:"primaryemail"` Primarycontact string `json:"primarycontact"` Pickuplocationid int `json:"pickuplocationid"` Applocationid int `json:"applocationid"` Suburb string `json:"suburb"` City string `json:"city"` Latitude string `json:"latitude"` Longitude string `json:"longitude"` Postcode string `json:"postcode"` Tenantimage string `json:"tenantimage"` Locationid int `json:"locationid"` Locationname string `json:"locationname"` Subcategoryid int `json:"subcategoryid"` Categoryid int `json:"categoryid"` Registrationno string `json:"registrationno"` } type ProductListResponse struct { Tenantid int `json:"tenantid"` Tenantname string `json:"tenantname"` Address string `json:"address"` Licenseno string `json:"licenseno"` Primaryemail string `json:"primaryemail"` Pickupcontactno string `json:"primarycontact"` Applocationid int `json:"applocationid"` Pickuplocationid int `json:"pickuplocationid"` Pickupsuburb string `json:"suburb"` Pickupcity string `json:"city"` Pickuplat string `json:"pickuplat"` Pickuplong string `json:"pickuplong"` Tenantpostcode string `json:"postcode"` Locationname string `json:"locationname"` Categoryname string `json:"categoryname"` Products []Products `json:"products"` } type Tenantproducts struct { Tenant TenantInfo `json:"tenant"` Products []Products `json:"products"` } type Productvariant struct { Variantid int `json:"variantid" gorm:"Primary_Key"` Tenantid int `json:"tenantid"` Variantname string `json:"variantname"` Categoryid int `json:"categoryid" gorm:"default:0"` Categoryname string `json:"categoryname" gorm:"-"` Subcategoryid int `json:"subcategoryid"` Status string `json:"status" gorm:"default:active"` } type Productlocations struct { Productlocationid int `json:"productlocationid" gorm:"Primary_Key"` Tenantid int `json:"tenantid"` Locationid int `json:"locationid"` Productid int `json:"productid"` Catlougeid int `json:"catlougeid"` Minquantity int `json:"minquantity" gorm:"default:0"` Maxquantity int `json:"maxquantity" gorm:"default:0"` Price float32 `json:"price" gorm:"default:0.0"` Quantity int `json:"quantity" gorm:"<-:false"` Stocktype string `json:"stocktype" gorm:"<-:false"` Status string `json:"status"` } type Productstock struct { Productstockid int `json:"productstockid" gorm:"Primary_Key"` Tenantid int `json:"tenantid"` Stockdate time.Time `json:"stockdate"` Locationid int `json:"locationid"` Productid int `json:"productid"` Quantity int `json:"quantity"` Stocktype string `json:"stocktype"` Status string `json:"status"` } type Productstocks struct { Productstockid int `json:"productstockid" gorm:"Primary_Key"` Locationid int `json:"locationid"` Tenantid int `json:"tenantid"` Stockdate string `json:"stockdate"` Productid int `json:"productid"` Quantity int `json:"quantity"` Stocktype string `json:"stocktype"` Status string `json:"status"` AppLocationid int `json:"applocationid"` Categoryid int `json:"categoryid"` Categoryname string `json:"categoryname" gorm:"->"` Subcategoryid int `json:"subcategoryid,omitempty"` Subcategoryname string `json:"Subcategoryname" ` Productname string `json:"productname,omitempty"` Productimage string `json:"productimage,omitempty"` Productdesc *string `json:"productdesc,omitempty"` Productsku *string `json:"productsku,omitempty"` Brandid *int `json:"brandid,omitempty"` Productbrand *string `json:"productbrand,omitempty"` Productunit *string `json:"productunit,omitempty"` Unitvalue *string `json:"unitvalue,omitempty"` Toppicks *string `json:"toppicks,omitempty"` Productcost *float64 `json:"productcost,omitempty"` Taxamount *float64 `json:"taxamount,omitempty"` Taxpercent *float64 `json:"taxpercent,omitempty"` Producttax *int `json:"producttax,omitempty"` Productstock *int `json:"productstock,omitempty"` Productcombo *int `json:"productcombo,omitempty"` Variants int `json:"variants"` Retailprice float64 `json:"retailprice,omitempty"` Diffprice float64 `json:"diffprice,omitempty"` Diffpercent float64 `json:"diffpercent,omitempty"` Othercost float64 `json:"othercost,omitempty"` Approve *int `json:"approve"` } type SubCategorySummary struct { SubCategoryID int `json:"subcategoryid"` SubCategoryName string `json:"subcatname"` Image string `json:"image"` ProductCount int `json:"productcount"` } type ProductSummary struct { Subcategoryid int `json:"subcategoryid"` Subcategroyname string `json:"subcategroyname"` Image string `json:"image"` Productcount int `json:"productcount"` } type ProductDiscount struct { Discountid int `json:"discountid" gorm:"column:discountid;primaryKey"` Discounttypeid int `json:"discounttypeid" gorm:"column:discounttypeid"` Tenantid int `json:"tenantid" gorm:"column:tenantid"` Moduleid int `json:"moduleid" gorm:"column:moduleid"` Productid int `json:"productid" gorm:"column:productid"` Locationid []string `json:"locationid" gorm:"-"` LocationidStr string `json:"-" gorm:"column:locationid"` Discountname string `json:"discountname" gorm:"column:discountname"` Discountcode string `json:"discountcode" gorm:"column:discountcode"` Discountterms string `json:"discountterms" gorm:"column:discountterms"` Discountvalue float64 `json:"discountvalue" gorm:"column:discountvalue"` Startdate string `json:"startdate" gorm:"column:startdate"` Enddate string `json:"enddate" gorm:"column:enddate"` Status string `json:"status" gorm:"column:status"` }