package com.topsun.posclient.common.service;
import java.math.BigDecimal;
import com.topsun.posclient.common.POSException;
import com.topsun.posclient.datamodel.CardRule;
import com.topsun.posclient.datamodel.CashierModel;
import com.topsun.posclient.datamodel.Invoice;
import com.topsun.posclient.datamodel.Item;
import com.topsun.posclient.datamodel.Material;
import com.topsun.posclient.datamodel.Member;
import com.topsun.posclient.datamodel.Shop;
import com.topsun.posclient.datamodel.dto.CashierModeDTO;
import com.topsun.posclient.datamodel.dto.GoldPriceDTO;
import com.topsun.posclient.datamodel.dto.ItemDTO;
import com.topsun.posclient.datamodel.dto.ShopDTO;
import com.topsun.posclient.datamodel.dto.UserDTO;
/**
* 基础服务接口
* @author Dong
*
*/
public interface IBaseService {
/**
* 获取用户数据
* @return
* @throws Exception
*/
public UserDTO getUserData() throws Exception;
/**
* 根据ID获取用户数据
* @param userId
* @return
* @throws Exception
*/
public UserDTO getUserById(int userId) throws Exception;
/**
* 根据用户ID获取雇员名称
* @param userId 用户ID
* @return
* @throws Exception
*/
public String getEmployeeNameById(int userId) throws Exception;
/**
* 获取所有结算方式
* @return
* @throws POSException
*/
public CashierModeDTO getAllCashierMode() throws POSException;
/**
* 根据ID获取结算方式名称
* @param payModeId
* @return
* @throws POSException
*/
public String getNameByPayModeId(int payModeId) throws POSException;
/**
* 根据ID获取结算方式
* @param payModeId 结算方式ID
* @return
* @throws POSException
*/
public CashierModel getCashierModelById(int payModeId) throws POSException;
/**
* 获取所有单品信息
* @return
* @throws Exception
*/
public ItemDTO getAllItem() throws Exception;
/**
* 获取所有店铺信息
* @return
* @throws Exception
*/
public ShopDTO getAllShop() throws Exception;
/**
* 根据ID获取店铺名称
* @param shopId 店铺ID
* @return
* @throws Exception
*/
public String getShopNameById(int shopId) throws Exception;
/**
* 根据ID获取店铺
* @param shopId 店铺ID
* @return
* @throws Exception
*/
public Shop getShopById(int shopId) throws Exception;
/**
* 根据ID获取单品名称
* @param itemId 单品ID
* @return
* @throws Exception
*/
public String getItemNameById(int itemId) throws Exception;
/**
* 根据用户ID获取店铺名称
*
* @throws Exception
*/
public String getShopNameByUserId(int userId) throws POSException;
/**
* 根据款号(条形码)获取商品信息
* @param barCode
* @return
* @throws POSException
*/
public Item getItemByBarCode(String barCode) throws POSException;
/**
* 生成单据号
*
* @param type
* 单据类型 0 零售单据号 1 旧金单据号
* @return
* @throws POSException
*/
public String createNo(int type) throws POSException;
// /**
// * 计算积分
// * 按物料类别进行判断,对应每个物料类别都有一个积分系数,
// * 如普通会员黄金类别积分系数为0.5,即购买10000元黄金,
// * 积分为5000分。金牌会员对应铂金类别积分系数为0.75,
// * 即购买10000元铂金,积分为7500分。
// * @param material 物料
// * @return 积分值
// * @throws POSException
// */
// public int calculatePoints(Material material)throws POSException;
/**
* 根据物料zu编号,获取实时金价
* @param mtartCode 物料组编码
* @return 实时金价
* @throws POSException
*/
public BigDecimal getGoldPriceByMtartCode(String mtartCode) throws POSException;
/**
* 获取所有实时金价
* @return
* @throws POSException
*/
public GoldPriceDTO queryAllGoldPrice() throws POSException;
/**
* 根据物料组获取物料名称
* @param matkl 物料组
* @return
* @throws POSException
*/
public String getNameByMatkl(String matkl) throws POSException;
/**
* 根据物料编码获取物料名称
* @param matkl 物料编码
* @return
* @throws POSException
*/
public String getNameByMatnr(String matnr) throws POSException;
/**
* 根据物料编码获取物料对象
* @param matnrCode 物料编码
* @return 物料对象
* @throws POSException
*/
public Material getMaterialByMatnr(String matnrCode) throws POSException;
/**
* 根据物料编码获取物料组
* @param matnr 物料编码
* @return 物料组编码
* @throws POSException
*/
public String getMatklByMatnr(String matnr) throws POSException;
/**
* 根据卡号获取会员信息
* @param cardNo 卡号
* @return
* @throws POSException
*/
public Member getMemberByCardNo(String cardNo) throws POSException;
/**
* 根据输入积分数获取兑换金额
* @param inputPoint 输入的积分数
* @return
* @throws POSException
*/
public BigDecimal getAmountByPoint(BigDecimal inputPoint) throws POSException;
/**
* 根据卡类型获取CardRule对象
* @param cardType 卡类型
* @return CardRule对象
* @throws POSException
*/
public CardRule getCardRuleByCardType(String cardType) throws POSException;
/**
* 获取会员卡折扣值
* @param cardType
* @param matkl
* @return
* @throws POSException
*/
public BigDecimal getVipDiscountByCardType(String cardType, String matkl) throws POSException;
/**
* 获取当前发票
* @return 发票号码
* @throws POSException 异常
*/
public Invoice getInvoice()throws POSException;
/**
* 根据发票号码获取发票数据
* @param invoiceNum 发票号码
* @param inputInvoiceCode 发票代码
* @return 发票数据
* @throws POSException
*/
public Invoice getInvoiceByNum(String invoiceNum,String inputInvoiceCode)throws POSException;
/**
* 获取发票号码
* @return 发票号码
* @throws POSException 异常
*/
public Invoice getInvoice(String invoiceNumber)throws POSException;
/**
* 删除发票号码
* @param invoiceNo 发票号码
* @throws POSException 异常信息
*/
public void deleteInvoiceNumber(String invoiceNo)throws POSException;
}