|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Web.Mvc;
|
|
|
|
|
using DSWeb.Areas.CommMng.DAL;
|
|
|
|
|
using DSWeb.Areas.TruckMng.DAL;
|
|
|
|
|
using DSWeb.Areas.TruckMng.DAL.MsRptPcHeadEdit;
|
|
|
|
|
using DSWeb.Areas.TruckMng.Models.MsWlBs;
|
|
|
|
|
|
|
|
|
|
using DSWeb.TruckMng.Helper;
|
|
|
|
|
using HcUtility.Comm;
|
|
|
|
|
using DSWeb.Areas.CommMng.Models;
|
|
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
|
|
using HcUtility.Core;
|
|
|
|
|
using DSWeb.TruckMng.Comm.Cookie;
|
|
|
|
|
using DSWeb.EntityDA;
|
|
|
|
|
|
|
|
|
|
using DSWeb.TruckMng.Helper.Repository;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsSysBillNoSet;
|
|
|
|
|
using DSWeb.MvcShipping.Models.MsSysBillNoSet;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsBaseInfoDAL;
|
|
|
|
|
|
|
|
|
|
using DSWeb.MvcShipping.Models.MsOpLetter;
|
|
|
|
|
using DSWeb.Areas.MvcShipping.DAL;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.ChMonthCloseDAL;
|
|
|
|
|
|
|
|
|
|
namespace DSWeb.Areas.TruckMng.Controllers
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 路单查询
|
|
|
|
|
/// </summary>
|
|
|
|
|
[JsonRequestBehavior]
|
|
|
|
|
public class PcHeadEdit_WFSDController : Controller
|
|
|
|
|
//20160217 应对潍坊松达需求
|
|
|
|
|
//在MSRPTPcHead(烟台爱德林需求)基础上修改
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
//
|
|
|
|
|
// GET: /RptMng/MsRptPcHeadQry
|
|
|
|
|
public ActionResult Index()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
public ActionResult Edit()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
public ActionResult FeeEdit ( )
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ActionResult FeeAmendEdit()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContentResult GetDataList ( int start, int limit, string sort, string condition )
|
|
|
|
|
{
|
|
|
|
|
var dataList = MsRptPcHeadEditDAL.GetWFSDList(condition, CookieConfig.GetCookie_UserId(Request), CookieConfig.GetCookie_UserCode(Request), CookieConfig.GetCookie_UserName(Request), CookieConfig.GetCookie_CompanyId(Request), sort);
|
|
|
|
|
|
|
|
|
|
var list = dataList.Skip(start).Take(limit);
|
|
|
|
|
|
|
|
|
|
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
|
|
|
|
|
return new ContentResult() { Content = json };
|
|
|
|
|
}
|
|
|
|
|
public ContentResult GetDataFenList(int start, int limit, string sort, string condition)
|
|
|
|
|
{
|
|
|
|
|
var dataList = MsRptPcHeadEditDAL.GetWFSDFenList(condition, sort);
|
|
|
|
|
|
|
|
|
|
var list = dataList.Skip(start).Take(limit);
|
|
|
|
|
|
|
|
|
|
var json = JsonConvert.Serialize(new { Success = true, Message = "查询成功", totalCount = dataList.Count, data = list.ToList() });
|
|
|
|
|
return new ContentResult() { Content = json };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContentResult GetData(string handle, string condition)
|
|
|
|
|
{
|
|
|
|
|
MsWlPcHead_WFSDEdit head = null;
|
|
|
|
|
if (handle == "edit" || handle == "copyadd")
|
|
|
|
|
{
|
|
|
|
|
head = MsRptPcHeadEditDAL.GetWFSDData(condition);
|
|
|
|
|
}
|
|
|
|
|
if (head == null)
|
|
|
|
|
{
|
|
|
|
|
head = new MsWlPcHead_WFSDEdit();
|
|
|
|
|
head.gId = "PC_" + Guid.NewGuid().ToString("N").ToUpper();
|
|
|
|
|
head.PGid = head.gId;
|
|
|
|
|
head.UserCode = CookieConfig.GetCookie_UserCode(Request);
|
|
|
|
|
head.UserName = Convert.ToString(Session["SHOWNAME"]);
|
|
|
|
|
head.BLTYPE = "派车单票";
|
|
|
|
|
var period = ChMonthCloseDAL.GetData("", CookieConfig.GetCookie_CompanyId(Request));
|
|
|
|
|
if (Convert.ToDateTime(period.FDAY) > DateTime.Now)
|
|
|
|
|
{
|
|
|
|
|
head.ACCDATE = period.PERIOD;
|
|
|
|
|
} else head.ACCDATE= DateTime.Now.ToString("yyyy-MM");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var json = JsonConvert.Serialize(
|
|
|
|
|
new { Success = true, Message = "查询成功", data = head });
|
|
|
|
|
return new ContentResult() { Content = json };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContentResult CreateDriverFee(string FeeValue, string data)
|
|
|
|
|
{
|
|
|
|
|
var headData = JsonConvert.Deserialize<MsWlPcHead_WFSDEdit>(data);
|
|
|
|
|
|
|
|
|
|
CostModel cm = new CostModel
|
|
|
|
|
{
|
|
|
|
|
BSNO = headData.gId,
|
|
|
|
|
CustomerName = headData.F_CustomerName,
|
|
|
|
|
FeeName = "陆运费",
|
|
|
|
|
FeeType = "2",
|
|
|
|
|
FeeValue = Convert.ToSingle(FeeValue),
|
|
|
|
|
CustomerType = "车队",
|
|
|
|
|
Remark = "利润自动生成司机费用",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
DBResult resultCost = new DBResult { Success = false, Message = "" };
|
|
|
|
|
resultCost = MsOpLetterDAL.CreateCost(cm, CookieConfig.GetCookie_UserId(Request));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var jsonRespose = new JsonResponse
|
|
|
|
|
{
|
|
|
|
|
Success = resultCost.Success,
|
|
|
|
|
Message = resultCost.Message,
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContentResult SaveWFSD(string opstatus, string data)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var headData = JsonConvert.Deserialize<MsWlPcHead_WFSDEdit>(data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var isPost = true;
|
|
|
|
|
var errorstr = "";
|
|
|
|
|
|
|
|
|
|
var custno = "";
|
|
|
|
|
|
|
|
|
|
if (opstatus == "add")
|
|
|
|
|
{
|
|
|
|
|
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='陆运'", Convert.ToString(Session["COMPANYID"]));
|
|
|
|
|
billnoset.BILLTYPE = "0111";
|
|
|
|
|
billnoset.RULEDATETYPE = "业务日期";
|
|
|
|
|
var bsdate=headData.ExpDate;
|
|
|
|
|
if (bsdate == "" || bsdate == null)
|
|
|
|
|
bsdate = DateTime.Now.ToString("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
headData.BillNo = MsSysBillNoSetDAL.GetBillNo(billnoset, bsdate, DateTime.Now.ToString("yyyy-MM")); //获取合同号
|
|
|
|
|
|
|
|
|
|
headData.OrgCode = CookieConfig.GetCookie_OrgCode(Request);
|
|
|
|
|
|
|
|
|
|
headData.DbOperationType = DbOperationType.DbotIns;
|
|
|
|
|
headData.TRANSSTATUS = "新建";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (opstatus == "edit")
|
|
|
|
|
{
|
|
|
|
|
headData.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
headData.ModelUIStatus = "E";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
headData.DbOperationType = DbOperationType.DbotDel;
|
|
|
|
|
}
|
|
|
|
|
//if ( !string.IsNullOrEmpty(headData.ExpDate)){
|
|
|
|
|
// headData.ExpDate = headData.ExpDate.Replace("T", " ");
|
|
|
|
|
//}
|
|
|
|
|
//if ( !string.IsNullOrEmpty(headData.ExpDate))
|
|
|
|
|
//{
|
|
|
|
|
// headData.ExpDate = headData.ExpDate.Substring(0, 10);
|
|
|
|
|
//}
|
|
|
|
|
//if ( !string.IsNullOrEmpty(headData.ArriveDate))
|
|
|
|
|
//{
|
|
|
|
|
// headData.ArriveDate = headData.ArriveDate.Substring(0, 10);
|
|
|
|
|
//}
|
|
|
|
|
//if (!string.IsNullOrEmpty(headData.ReturnDate))
|
|
|
|
|
//{
|
|
|
|
|
// headData.ReturnDate = headData.ReturnDate.Substring(0, 10);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(headData.LrDate))
|
|
|
|
|
{
|
|
|
|
|
headData.LrDate = headData.LrDate.Substring(0, 10);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var currentTime = System.DateTime.Now;
|
|
|
|
|
headData.LrDate = currentTime.ToString("d");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var BSNO = headData.gId;
|
|
|
|
|
|
|
|
|
|
if (isPost)
|
|
|
|
|
{
|
|
|
|
|
var modb = new ModelObjectDB();
|
|
|
|
|
DBResult result = modb.Save(headData);
|
|
|
|
|
if (result.Success == true) { }
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MsSysBillNoSetDAL.DeleteBsNo(custno);
|
|
|
|
|
}
|
|
|
|
|
var jsonRespose = new JsonResponse
|
|
|
|
|
{
|
|
|
|
|
Success = result.Success,
|
|
|
|
|
Message = result.Message,
|
|
|
|
|
Data = MsRptPcHeadEditDAL.GetWFSDData("GID='" + BSNO + "'")
|
|
|
|
|
};
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var jsonRespose = new JsonResponse { Success = false, Message = errorstr + "重复,不允许保存!" };
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ContentResult SaveWFSDList ( string data )
|
|
|
|
|
{
|
|
|
|
|
var dataList = JsonConvert.Deserialize<List<MsWlPcHead_WFSDEdit>>(data);
|
|
|
|
|
foreach (var _d in dataList){
|
|
|
|
|
if ( !string.IsNullOrEmpty(_d.ExpDate)){
|
|
|
|
|
_d.ExpDate = _d.ExpDate.Replace("T", " ");
|
|
|
|
|
}
|
|
|
|
|
if ( !string.IsNullOrEmpty(_d.ExpDate))
|
|
|
|
|
{
|
|
|
|
|
_d.ExpDate = _d.ExpDate.Substring(0, 10);
|
|
|
|
|
}
|
|
|
|
|
if ( !string.IsNullOrEmpty(_d.ArriveDate))
|
|
|
|
|
{
|
|
|
|
|
_d.ArriveDate = _d.ArriveDate.Substring(0, 10);
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(_d.ReturnDate))
|
|
|
|
|
{
|
|
|
|
|
_d.ReturnDate = _d.ReturnDate.Substring(0, 10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(_d.LrDate))
|
|
|
|
|
{
|
|
|
|
|
_d.LrDate = _d.LrDate.Substring(0, 10);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var currentTime = System.DateTime.Now;
|
|
|
|
|
_d.LrDate = currentTime.ToString("d");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (_d.BillNo == "" || _d.BillNo == "*")
|
|
|
|
|
{
|
|
|
|
|
_d.DbOperationType = DbOperationType.DbotIns;
|
|
|
|
|
_d.ModelUIStatus = "I";
|
|
|
|
|
|
|
|
|
|
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='陆运'", Convert.ToString(Session["COMPANYID"]));
|
|
|
|
|
billnoset.BILLTYPE = "0111";
|
|
|
|
|
|
|
|
|
|
_d.BillNo = MsSysBillNoSetDAL.GetBillNo(billnoset, DateTime.Now.ToString("yyyy-MM-dd"), DateTime.Now.ToString("yyyy-MM")); //获取合同号
|
|
|
|
|
|
|
|
|
|
_d.OrgCode = CookieConfig.GetCookie_OrgCode(Request);
|
|
|
|
|
_d.gId = "PC_" + Guid.NewGuid().ToString("N").ToUpper();
|
|
|
|
|
_d.PGid = _d.gId;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_d.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
_d.ModelUIStatus = "E";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
var _L = ModelObjectConvert<MsWlPcHead_WFSDEdit>.ToModelObjectList(dataList);
|
|
|
|
|
//var _DL = ModelObjectConvert<MsWlPcHead_ADLEdit>.ToModelObjectList(DeldataList);
|
|
|
|
|
|
|
|
|
|
var modb = new ModelObjectRepository();
|
|
|
|
|
result = modb.SaveHead(_L);
|
|
|
|
|
|
|
|
|
|
//刷新父窗口上的父节点
|
|
|
|
|
var jsonRespose = new JsonResponse
|
|
|
|
|
{
|
|
|
|
|
Success = result.Success,
|
|
|
|
|
Message = result.Message,
|
|
|
|
|
//Data = XXHDAL.GetData("M.ContractNo='" + head.ContractNo + "'")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ContentResult HuiDan(string data,string jsonBody)
|
|
|
|
|
{
|
|
|
|
|
var headData = JsonConvert.Deserialize<MsWlPcHead_WFSDEdit>(data);
|
|
|
|
|
|
|
|
|
|
var bodylist = JsonConvert.Deserialize<List<MsWlPcHead_WFSDEdit>>(jsonBody);
|
|
|
|
|
|
|
|
|
|
var result = MsRptPcHeadEditDAL.HuiDan(headData,bodylist);
|
|
|
|
|
|
|
|
|
|
//刷新父窗口上的父节点
|
|
|
|
|
var jsonRespose = new JsonResponse
|
|
|
|
|
{
|
|
|
|
|
Success = result.Success,
|
|
|
|
|
Message = result.Message,
|
|
|
|
|
//Data = XXHDAL.GetData("M.ContractNo='" + head.ContractNo + "'")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ContentResult CreatePC ( string MblNo, string CustomerName, string ContainerQty, string Ton, string LoadCount )
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
|
|
|
|
|
var _D = new MsWlPcHead_WFSDEdit();
|
|
|
|
|
_D.MblNo = MblNo;
|
|
|
|
|
_D.CustomerName = CustomerName;
|
|
|
|
|
_D.ContainerQty = ContainerQty;//件数
|
|
|
|
|
_D.Ton = Ton;//重量
|
|
|
|
|
_D.LoadCount = LoadCount;//体积
|
|
|
|
|
//////////////
|
|
|
|
|
_D.DbOperationType = DbOperationType.DbotIns;
|
|
|
|
|
_D.ModelUIStatus = "I";
|
|
|
|
|
|
|
|
|
|
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='拼箱运输'", Convert.ToString(Session["COMPANYID"]));
|
|
|
|
|
billnoset.BILLTYPE = "0121";
|
|
|
|
|
|
|
|
|
|
_D.BillNo = MsSysBillNoSetDAL.GetBillNo(billnoset, DateTime.Now.ToString(), DateTime.Now.ToString()); //获取合同号
|
|
|
|
|
|
|
|
|
|
_D.OrgCode = CookieConfig.GetCookie_OrgCode(Request);
|
|
|
|
|
_D.gId = "PC_" + Guid.NewGuid().ToString("N").ToUpper();
|
|
|
|
|
|
|
|
|
|
var modb = new ModelObjectRepository();
|
|
|
|
|
result = modb.Save(_D);
|
|
|
|
|
|
|
|
|
|
//刷新父窗口上的父节点
|
|
|
|
|
var jsonRespose = new JsonResponse
|
|
|
|
|
{
|
|
|
|
|
Success = result.Success,
|
|
|
|
|
Message = result.Message,
|
|
|
|
|
//Data = XXHDAL.GetData("M.ContractNo='" + head.ContractNo + "'")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ContentResult AddBillAuto(string data)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var head = JsonConvert.Deserialize<MsWlBsHead>(data);
|
|
|
|
|
|
|
|
|
|
var headData = new MsWlPcHead_WFSDEdit();
|
|
|
|
|
var isPost = true;
|
|
|
|
|
var errorstr = "";
|
|
|
|
|
|
|
|
|
|
var custno = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var billnoset = MsSysBillNoSetDAL.GetData("OPLBNAME='陆运'", Convert.ToString(Session["COMPANYID"]));
|
|
|
|
|
billnoset.BILLTYPE = "0111";
|
|
|
|
|
billnoset.RULEDATETYPE = "业务日期";
|
|
|
|
|
var bsdate = headData.ExpDate;
|
|
|
|
|
if (bsdate == "" || bsdate == null)
|
|
|
|
|
bsdate = DateTime.Now.ToString("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
headData.BillNo = MsSysBillNoSetDAL.GetBillNo(billnoset, bsdate, DateTime.Now.ToString("yyyy-MM")); //获取合同号
|
|
|
|
|
|
|
|
|
|
headData.OrgCode = CookieConfig.GetCookie_OrgCode(Request);
|
|
|
|
|
|
|
|
|
|
headData.DbOperationType = DbOperationType.DbotIns;
|
|
|
|
|
|
|
|
|
|
headData.RefBillNo = head.BillNo;
|
|
|
|
|
headData.CustName= head.CustName;
|
|
|
|
|
headData.CustomerName = head.CustName;
|
|
|
|
|
headData.VoyVeg = head.VoyVeg;
|
|
|
|
|
headData.EtDate = head.EtDate;
|
|
|
|
|
headData.DstArea = head.DstArea;
|
|
|
|
|
headData.EndPortDate = head.EndPortDate;
|
|
|
|
|
headData.MblNo = head.MblNo;
|
|
|
|
|
headData.DispatchName = head.DispatchName;
|
|
|
|
|
headData.DetiNation = head.DetiNation;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(headData.LrDate))
|
|
|
|
|
{
|
|
|
|
|
headData.LrDate = headData.LrDate.Substring(0, 10);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var currentTime = System.DateTime.Now;
|
|
|
|
|
headData.LrDate = currentTime.ToString("d");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var BSNO = headData.gId;
|
|
|
|
|
|
|
|
|
|
if (isPost)
|
|
|
|
|
{
|
|
|
|
|
var modb = new ModelObjectDB();
|
|
|
|
|
DBResult result = modb.Save(headData);
|
|
|
|
|
if (result.Success == true) { }
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MsSysBillNoSetDAL.DeleteBsNo(custno);
|
|
|
|
|
}
|
|
|
|
|
var jsonRespose = new JsonResponse
|
|
|
|
|
{
|
|
|
|
|
Success = result.Success,
|
|
|
|
|
Message = result.Message,
|
|
|
|
|
Data = MsRptPcHeadEditDAL.GetWFSDData("GID='" + BSNO + "'")
|
|
|
|
|
};
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var jsonRespose = new JsonResponse { Success = false, Message = errorstr + "重复,不允许保存!" };
|
|
|
|
|
return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) };
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 参照部分
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|