李狗蛋 ec44eb9a46 1
2025-05-16 10:22:19 +08:00

252 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Orm.DataEntity;
using System.Web;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Deploy;
using System.Data;
namespace Pilot_KD_Parino.Sal_Order
{
[HotUpdate]
[Description("销售订单--查看业绩分摊单")]
public class Bill : AbstractBillPlugIn
{
string currentRecId;
public override void OnInitialize(InitializeEventArgs e)
{
base.OnInitialize(e);
TabControl ctl = (TabControl)this.View.GetControl("FTab");
ctl.SetFireSelChanged(true);
}
public override void TabItemSelectedChange(TabItemSelectedChangeEventArgs e)
{
base.TabItemSelectedChange(e);
//if (e.TabKey.Equals("FTab_VRYF_P_qtr"))
if (e.TabKey.Equals("FTAB_VRYF_P_QTR"))
{
var Bilno = Convert.ToString(this.View.Model.GetValue("FBILLNO"));
//获取已打开的view
IDynamicFormView view = this.View.GetView(currentRecId);
if (view != null)
{
//关闭已打开view
view.Close();
this.View.SendDynamicFormAction(view);
}
ListShowParameter ListShowParameter = new ListShowParameter();
//显示业绩分摊单
//声明列表显示参数
var listShowParameter = new ListShowParameter();
//声明是奖惩记录单列表
listShowParameter.FormId = "QPHY_PerformanceSharing";
listShowParameter.PageId = Guid.NewGuid().ToString();
//设置过滤条件,只需要当前身份证号就行了
listShowParameter.ListFilterParameter.Filter = string.Format(" FSourceBillNo = '{0}' ", Bilno);
//支持返回数据
listShowParameter.IsLookUp = false;
ListShowParameter.ParentPageId = this.View.PageId;
listShowParameter.OpenStyle.ShowType = ShowType.InContainer;
listShowParameter.OpenStyle.TagetKey = "F_VRYF_Panel_83g";
listShowParameter.FilterSchemeId = "672f043629cf3e";
currentRecId = listShowParameter.PageId;
this.View.ShowForm(listShowParameter);
}
}
public override void AfterDoOperation(AfterDoOperationEventArgs e)
{
base.AfterDoOperation(e);
//下载word
if (e.Operation.Operation.Equals("DownWord"))
{
//获取时间戳
var ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
var _TimeSpan = Convert.ToInt64(ts.TotalSeconds).ToString();
DynamicObject FSaleOrgId = this.View.Model.GetValue("FSaleOrgId") as DynamicObject;
var oId = Convert.ToInt32(FSaleOrgId["Id"]);
DateTime FDATE = Convert.ToDateTime(this.View.Model.GetValue("FDATE"));
string F_cocntractnumber = Convert.ToString(this.View.Model.GetValue("F_contractnumber"));
DynamicObject FCustId = this.View.Model.GetValue("FCustId") as DynamicObject;
DynamicObject FSalerId = this.View.Model.GetValue("FSalerId") as DynamicObject;
string FIsDebugging = this.View.Model.GetValue("FIsDebugging")?.ToString();
DynamicObject F_projectname = this.View.Model.GetValue("F_projectname") as DynamicObject;
if (FCustId == null)
{
this.View.ShowErrMessage("客户不允许为空!");
return;
}
if (FSalerId == null)
{
this.View.ShowErrMessage("销售员不允许为空!");
return;
}
if (F_projectname == null && oId != 438223)
{
this.View.ShowErrMessage("工程项目不允许为空");
return;
}
string projectname = "";
if (oId != 438223)
{
projectname = F_projectname["NAME"]?.ToString();
//特殊符号平替解决方法:
projectname = projectname.Replace("/", "");
projectname = projectname.Replace("+", "");
projectname = projectname.Replace("*", " ");
projectname = projectname.Replace(":", "");
}
string FPath = string.Format(@"D:\导出Word\{0}\{1}\{2}\{3}年\{4}月\{5}日\{6}.docx", this.Context.DataCenterName, "销售订单",
this.View.Model.DataObject["Billno"], DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, string.Format("{0}-{1}-{2}-{3}-{4}", FDATE.ToString("yyyy-MM-dd"), F_cocntractnumber
, string.IsNullOrWhiteSpace(projectname) ? "" : projectname, FCustId == null ? "" : FCustId["NAME"], FSalerId == null ? "" : FSalerId["NAME"]));
//获取订单类型编码
DynamicObject F_Ordercategory = this.View.Model.GetValue("F_Ordercategory") as DynamicObject;
if (F_Ordercategory == null)
{
return;
}
string FOrdercategory = Convert.ToString(F_Ordercategory["FNumber"]);
//获取金额
string fBILLNO = this.View.Model.GetValue("FBILLNO").ToString();
string sql = string.Format(@"/*dialect*/Select B.FBILLALLAMOUNT as 'FBILLALLAMOUNT' From T_SAL_ORDER A
JOIN T_SAL_ORDERFIN B on A.FID = B.FID Where A.FBILLNO = '{0}'", fBILLNO);
var sqlList = DBUtils.ExecuteDynamicObject(Context, sql);
decimal fAmount;
if (sqlList.Count != 0)
{
fAmount = Convert.ToDecimal(sqlList[0]["FBILLALLAMOUNT"]);
}
else
{
sql = string.Format(@"/*dialect*/Select B.FBILLALLAMOUNT as 'FBILLALLAMOUNT' From T_SAL_XORDER A
JOIN T_SAL_XORDERFIN B on A.FID = B.FID Where A.FBILLNO = '{0}'", fBILLNO);
sqlList = DBUtils.ExecuteDynamicObject(Context, sql);
fAmount = Convert.ToDecimal(sqlList[0]["FBILLALLAMOUNT"]);
}
if (fAmount >= 200000 && FOrdercategory == "P")
{
FOrdercategory = "PP";
}
var ntess = FIsDebugging;
if (FOrdercategory == "SX" && FIsDebugging == "1")
{
FOrdercategory = "SX-1";
}
if (FOrdercategory == "SX" && FIsDebugging == "0")
{
FOrdercategory = "SX-2";
}
//判断退货/换货
var splitList = F_cocntractnumber.Split('-');
if (splitList.Count() > 1)
{
if (splitList[1].ToString().Contains("TH"))
{
FOrdercategory = "TH";
}
else
{
FOrdercategory = "HH";
}
}
//获取模板地址
var TempModelPath = SQL.SqlManage.GetTempModelPath(this.Context, FOrdercategory);
if (TempModelPath == null)
{
this.View.ShowErrMessage("找不到对应的word模板");
return;
}
var formId = this.View.Model.DataObject["FFormId"];
DataSet TempModelData = null;
if (formId.ToString() == "SAL_XORDER")
{
sql = string.Format(@"SELECT FDOCUMENTSTATUS FROM T_SAL_XORDER WHERE FBILLNO = '{0}'", fBILLNO);
sqlList = DBUtils.ExecuteDynamicObject(Context, sql);
if (Convert.ToString(sqlList[0]["FDOCUMENTSTATUS"]) != "C")
{
this.View.ShowErrMessage("销售订单新变更单未审核,不能下载合同");
return;
}
sql = string.Format(@"SELECT FID AS FID FROM T_SAL_ORDER WHERE FXPKID IN (SELECT FID FROM T_SAL_XORDER WHERE FBILLNO = '{0}')", fBILLNO);
sqlList = DBUtils.ExecuteDynamicObject(Context, sql);
//获取内容
TempModelData = SQL.SqlManage.GetTempModelData(this.Context, Convert.ToString(sqlList[0]["FID"]), FOrdercategory);
}
else
{
//获取内容
TempModelData = SQL.SqlManage.GetTempModelData(this.Context, Convert.ToString(this.View.Model.DataObject["Id"]), FOrdercategory);
}
// 提取文件名
string fileProjectname = Path.GetFileName(FPath);
// 在临时文件目录,生成一个完整的文件名: C:\Program Files\Kingdee\K3Cloud\WebSite\...\JD.xls
string filePath = PathUtils.GetPhysicalPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath));
// 生成一个供用户下载文件的url地址: http:\\localhost\K3Cloud\...\JD.xls
string fileUrl = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath));
//另存为word
Pilot_KD_Parino.Common.CommonHelper.DolondWord(Convert.ToString(TempModelPath[0]["FTempPath"]), TempModelData, FPath, FOrdercategory);
//另存为word
Pilot_KD_Parino.Common.CommonHelper.DolondWord(Convert.ToString(TempModelPath[0]["FTempPath"]), TempModelData, filePath, FOrdercategory);
//下载word
if (!string.IsNullOrEmpty(FPath))
{
//打开文件下载界面
DynamicFormShowParameter showParameter = new DynamicFormShowParameter();
showParameter.FormId = "BOS_FileDownload";
showParameter.OpenStyle.ShowType = ShowType.Modal;
showParameter.CustomComplexParams.Add("url", fileUrl);
//显示
this.View.ShowForm(showParameter);
}
}
string opt = e.Operation.Operation;
if (opt == "Save" && e.OperationResult.IsSuccess)
{
this.View.Refresh();
}
}
private string GetWebAppRootUrl()
{
Uri siteuri;
if (Uri.TryCreate(HttpContext.Current.Request.ApplicationPath, UriKind.Absolute, out siteuri))
{
return siteuri.AbsoluteUri;
}
return "";
}
}
}