slot0 = class("CommonCommodity", import(".BaseCommodity"))

function slot0.bindConfigTable(slot0)
	return pg.shop_template
end

function slot0.canPurchase(slot0)
	if slot0.type == Goods.TYPE_MILITARY then
		return slot0.buyCount == 0
	elseif slot0.type == Goods.TYPE_GIFT_PACKAGE or slot0.type == Goods.TYPE_SKIN then
		return slot0:getLimitCount() <= 0 or slot0.buyCount < slot1
	else
		return uv0.super.canPurchase(slot0)
	end
end

function slot0.isDisCount(slot0)
	slot2 = true

	if table.getCount(slot0:getConfig("discount_time")) ~= 0 then
		slot2 = pg.TimeMgr.GetInstance():inTime(slot1)
	end

	if slot0:IsItemDiscountType() then
		return slot2
	else
		return slot0:getConfig("discount") ~= 0 and slot2
	end
end

function slot0.GetPrice(slot0)
	slot1 = 0
	slot2 = slot0:getConfig("resource_num")

	if slot0:isDisCount() and slot0:IsItemDiscountType() then
		slot4 = pg.shop_discount_coupon_template[slot0.id].discounted_price
		slot1 = (slot2 - slot4) / slot2 * 100
		slot2 = slot4
	elseif slot3 then
		slot2 = (100 - slot0:getConfig("discount")) / 100 * slot2
	end

	return slot2, slot1
end

function slot0.IsItemDiscountType(slot0)
	return slot0:getConfig("genre") == ShopArgs.SkinShop and pg.shop_discount_coupon_template[slot0.id] ~= nil and function ()
		return getProxy(ActivityProxy):ExistSkinCouponActivityAndShopId(uv0.id)
	end()
end

function slot0.getLimitCount(slot0)
	for slot5, slot6 in ipairs(slot0:getConfig("limit_args") or {}) do
		if slot6[1] == "time" then
			return slot6[2]
		end
	end

	return 0
end

function slot0.GetDiscountItem(slot0)
	return pg.item_data_statistics[pg.shop_discount_coupon_template[slot0.id].item]
end

function slot0.isLevelLimit(slot0, slot1, slot2)
	slot3, slot4 = slot0:getLevelLimit()

	if slot2 and slot4 then
		return false
	end

	return slot3 > 0 and slot1 < slot3
end

function slot0.getLevelLimit(slot0)
	for slot5, slot6 in ipairs(slot0:getConfig("limit_args")) do
		if type(slot6) == "table" and slot6[1] == "level" then
			return slot6[2], slot6[3]
		end
	end

	return 0
end

function slot0.isTimeLimit(slot0)
	return slot0:getLimitCount() <= 0 or slot1 < slot0.buyCount
end

function slot0.getSkinId(slot0)
	if slot0.type == Goods.TYPE_SKIN then
		return slot0:getConfig("effect_args")[1]
	end
end

return slot0
