📄 cw_fymgr.cs
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using com.unicafe.common;
using Com.Ascs.Drp_KC;
using com.ascs.plp.xs;
using com.ascs.plp.cg;
using com.ascs.plp.service;
namespace Com.Ascs.Plp.CW
{
/// <summary>
/// CW_FyMgr 的摘要说明。
/// </summary>
public class CW_FyMgr
{
public CW_FyMgr()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
// begin
/// <summary>
/// 由出库单生成应收账款单
/// </summary>
/// <param name="theCW_FYCB">要添加的CW_FYCB对象</param>
public bool MakeYSD(SqlConnection cn,string sCrkdh,string jgdm,string userid)
{
try
{
Com.Ascs.Drp_KC.CRKD oCrkd = new Com.Ascs.Drp_KC.CRKD(); //出入库单表对象
Com.Ascs.Drp_KC.CRKDMgr oCrkdMgr = new Com.Ascs.Drp_KC.CRKDMgr(); //出入库单表对象 管理类
Com.Ascs.Drp_KC.CRKDXM oCrkdXm = new Com.Ascs.Drp_KC.CRKDXM(); //出入库单表细目对象
Com.Ascs.Drp_KC.CRKDXMMgr oCrkdXmMgr = new Com.Ascs.Drp_KC.CRKDXMMgr(); //出入库单表细目对象 管理类
oCrkd = (Com.Ascs.Drp_KC.CRKD)oCrkdMgr.GetCRKD(sCrkdh); //取出入库单
ArrayList oList = new ArrayList();
oList = (ArrayList)oCrkdXmMgr.FindCRKDXM(sCrkdh); //取出入库单细目
CW_YSD oYsd = new CW_YSD(); //应收单表对象
CW_YSDMgr oYsdMgr = new CW_YSDMgr(); //应收单表对象
CW_YSDXM oYsdXm = new CW_YSDXM(); //应收单表对象
CW_YSDXMMgr oYsdXmMgr = new CW_YSDXMMgr(); //应收单表对象
double fYsje = 0; //应收金额
double fTotalJE = 0; //应收金额总和
com.ascs.plp.common.DM_bj autonumber = new com.ascs.plp.common.DM_bj(); //编码方法
if(oCrkd.YSDJBH.IndexOf("DB")!=-1) //调拨单生成应收单
{
#region
Com.Ascs.Drp_KC.DBD oDBD = new Com.Ascs.Drp_KC.DBD(); //调拨单表对象
Com.Ascs.Drp_KC.DBDMgr oDBDMgr = new Com.Ascs.Drp_KC.DBDMgr(); //调拨单表对象的管理类
Com.Ascs.Drp_KC.DBDXM oDBDXm = new Com.Ascs.Drp_KC.DBDXM(); //调拨单细目表对象
Com.Ascs.Drp_KC.DBDXMMgr oDBDXmMgr = new Com.Ascs.Drp_KC.DBDXMMgr(); //调拨单表对象细目的管理类
oDBD = (DBD)oDBDMgr.GetDBD(oCrkd.YSDJBH); //调拨单
Com.Ascs.Drp_KC.CKB oCkb = new Com.Ascs.Drp_KC.CKB(); //仓库表对象
Com.Ascs.Drp_KC.CKBMgr oCKBMgr = new Com.Ascs.Drp_KC.CKBMgr(); //仓库表对象的管理类
oCkb = (Com.Ascs.Drp_KC.CKB)oCKBMgr.GetCKB(oDBD.DCK); //调出库
//11111生成应收单主表
oYsd.YSDH =autonumber.dmtwo("YR",jgdm); //1应收单号
oYsd.JGDM = jgdm; //2 机构代码
oYsd.WLHLX = "3"; //3 往来户类型 1:客户2:供应商3:机构4:人员
oYsd.WLHBH = oCkb.JGDM; //4 往来户编号 //凋出库的机构代码
oYsd.YSDJH = oCrkd.CRKDH; //5 原始单据号
oYsd.DJLX = 3; //6 单据类型 “3调拨应收”
oYsd.HBLX = "0901"; //7 货币类型
oYsd.YSJE = 0; //8 应收金额
oYsd.SJYSJE = 0; //9 实际应收金额
oYsd.YSYE = 0; //10 应收余额
oYsd.FZR = null; //11 负责人
oYsd.ZDR = userid; //12 制单人
oYsd.SHR = null; //13 审核人
oYsd.ZTBJ = "1"; //14 状态标记 1:待核销2:可核销3:已核销 //写完细目表后改为2。
oYsd.QCBJ = "0"; //15 期初标记 0:否1:是
oYsd.BZ = "由调拨单生成的应收单"; //16 备注
oYsd.CJR = userid; //17 创建人
oYsd.CJRQ = DateTime.Now; //18 创建日期
oYsd.XGR = userid; //19 修改人
oYsd.XGRQ = DateTime.Now; //20 修改日期
oYsd.GZBJ = "0"; //21 过账标记 0:未过账(否)1:已过账(是)
//oYsd.YSKSJ = Convert.ToDateTime(""); //22 应收款时间
oYsdMgr.AddCW_YSD(cn,oYsd);
//2222生成应收单细目表
for (int i=0; i<oList.Count; i++)
{
oCrkdXm = (Com.Ascs.Drp_KC.CRKDXM)oList[i]; //取出入库单细目
if(oCrkdXm.SJSL>0) //处入库的实际数量大于0
{
oDBDXm = (DBDXM)oDBDXmMgr.GetDBDXM(oCrkd.YSDJBH,oCrkdXm.CPDM,oCrkdXm.ZLZK); //取调拨单细目
fYsje = oCrkdXm.SJSL * oDBDXm.CPJG; //应收金额 = 实际数量*产品价格
fTotalJE = fTotalJE + fYsje;
oYsdXm.YSDH = oYsd.YSDH; //1 应收单号
oYsdXm.XH = GetYsdxmXH(cn,oYsd.YSDH); //2 序号
oYsdXm.CPDM = oCrkdXm.CPDM; //3 产品代码
oYsdXm.ZLZK = oCrkdXm.ZLZK; //4 质量状况
oYsdXm.DJ = oDBDXm.CPJG; //5 单价
oYsdXm.SL = oCrkdXm.SJSL; //6 数量
oYsdXm.YSJE = fYsje; //7 应收金额
oYsdXm.YSYE = fYsje; //8 应收余额
oYsdXm.HXZT = "1"; //9 核销状态 1:可核销2:已核销
oYsdXmMgr.AddCW_YSDXM(cn,oYsdXm);
}
}
//3333修改主表的金额
oYsd.YSJE = fTotalJE; //8 应收金额
oYsd.SJYSJE = fTotalJE; //9 实际应收金额
oYsd.YSYE = fTotalJE; //10 应收余额
oYsd.ZTBJ = "2" ; //14 状态标记 ZTBJ nvarchar(1) N 1:待核销2:可核销3:已核销 //写完细目表后改为2。
oYsdMgr.UpdateCW_YSD(cn,oYsd);
#endregion
}
else if(oCrkd.YSDJBH.IndexOf("DD")!=-1) //销售定单生成应收单
{
#region
com.ascs.plp.xs.XSDD oXsdd = new com.ascs.plp.xs.XSDD(); //销售定单对象
com.ascs.plp.xs.XSDDMgr oXsddMgr = new com.ascs.plp.xs.XSDDMgr(); //销售定单对象管理类
com.ascs.plp.xs.XSDDXM oXsddXm = new com.ascs.plp.xs.XSDDXM(); //销售定单细目对象
com.ascs.plp.xs.XSDDXMMgr oXsddXmMgr = new com.ascs.plp.xs.XSDDXMMgr(); //销售定单细目对象管理类
oXsdd = (XSDD)oXsddMgr.GetXSDD(oCrkd.YSDJBH);
//11111生成应收单主表
oYsd.YSDH =autonumber.dmtwo("YR",jgdm); //1应收单号
oYsd.JGDM = jgdm; //2 机构代码
oYsd.WLHLX = "1"; //3 往来户类型 1:客户2:供应商3:机构4:人员
oYsd.WLHBH = oXsdd.KHDM; //4 往来户编号 客户代码
oYsd.YSDJH = oCrkd.CRKDH; //5 原始单据号
oYsd.DJLX = 1; //6 单据类型 “1销售应收”
oYsd.HBLX = "0901"; //7 货币类型
oYsd.YSJE = 0; //8 应收金额
oYsd.SJYSJE = 0; //9 实际应收金额
oYsd.YSYE = 0; //10 应收余额
oYsd.FZR = null; //11 负责人
oYsd.ZDR = userid; //12 制单人
oYsd.SHR = null; //13 审核人
oYsd.ZTBJ = "1"; //14 状态标记 1:待核销2:可核销3:已核销 //写完细目表后改为2。
oYsd.QCBJ = "0"; //15 期初标记 0:否1:是
oYsd.BZ = ""; //16 备注
oYsd.CJR = userid; //17 创建人
oYsd.CJRQ = DateTime.Now; //18 创建日期
oYsd.XGR = userid; //19 修改人
oYsd.XGRQ = DateTime.Now; //20 修改日期
oYsd.GZBJ = "0"; //21 过账标记 0:未过账(否)1:已过账(是)
//oYsd.YSKSJ = ""; //22 应收款时间
oYsdMgr.AddCW_YSD(cn,oYsd);
//2222生成应收单细目表
for (int i=0; i<oList.Count; i++)
{
oCrkdXm = (Com.Ascs.Drp_KC.CRKDXM)oList[i]; //取出入库单细目
if(oCrkdXm.SJSL>0) //处入库的实际数量大于0
{
oXsddXm = (XSDDXM)oXsddXmMgr.GetXSDDXM(oCrkd.YSDJBH,oCrkdXm.CPDM,oCrkdXm.ZLZK); //取销售定单细目
fYsje = oCrkdXm.SJSL * oXsddXm.XSDJ; //应收金额 = 实际数量*产品价格
fTotalJE = fTotalJE + fYsje;
oYsdXm.YSDH = oYsd.YSDH; //1 应收单号
oYsdXm.XH = GetYsdxmXH(cn,oYsd.YSDH); //2 序号
oYsdXm.CPDM = oCrkdXm.CPDM; //3 产品代码
oYsdXm.ZLZK = oCrkdXm.ZLZK; //4 质量状况
oYsdXm.DJ = oXsddXm.XSDJ; //5 单价
oYsdXm.SL = oCrkdXm.SJSL; //6 数量
oYsdXm.YSJE = fYsje; //7 应收金额
oYsdXm.YSYE = fYsje; //8 应收余额
oYsdXm.HXZT = "1"; //9 核销状态 1:可核销2:已核销
oYsdXmMgr.AddCW_YSDXM(cn,oYsdXm);
}
}
//3333修改主表的金额
oYsd.YSJE = fTotalJE; //8 应收金额
oYsd.SJYSJE = fTotalJE; //9 实际应收金额
oYsd.YSYE = fTotalJE-oXsdd.YFJE; //10 应收余额
oYsd.ZTBJ = "2" ; //14 状态标记 ZTBJ nvarchar(1) N 1:待核销2:可核销3:已核销 //写完细目表后改为2。
oYsdMgr.UpdateCW_YSD(cn,oYsd);
#endregion
}
else if(oCrkd.YSDJBH.IndexOf("CT")!=-1) //采购退货单生成应收单
{
#region
com.ascs.plp.cg.CGTHD oCgthd = new com.ascs.plp.cg.CGTHD(); //采购退货单对象
com.ascs.plp.cg.CGTHDXM oCgthdXm = new com.ascs.plp.cg.CGTHDXM(); //采购退货单细目对象
com.ascs.plp.cg.BackGood oCgthMgr = new com.ascs.plp.cg.BackGood(); //采购退货管理类
oCgthd = (CGTHD)oCgthMgr.GetCGTHD(oCrkd.YSDJBH);
//11111生成应收单主表
oYsd.YSDH = autonumber.dmtwo("YR",jgdm); //1应收单号
oYsd.JGDM = jgdm; //2 机构代码
oYsd.WLHLX = "1"; //3 往来户类型 1:客户2:供应商3:机构4:人员
oYsd.WLHBH = oCgthd.SHFMC; //4 往来户编号
oYsd.YSDJH = oCrkd.CRKDH; //5 原始单据号
oYsd.DJLX = 2; //6 单据类型 “采购退货应收
oYsd.HBLX = "0901"; //7 货币类型
oYsd.YSJE = 0; //8 应收金额
oYsd.SJYSJE = 0; //9 实际应收金额
oYsd.YSYE = 0; //10 应收余额
oYsd.FZR = null; //11 负责人
oYsd.ZDR = userid; //12 制单人
oYsd.SHR = null; //13 审核人
oYsd.ZTBJ = "1"; //14 状态标记 1:待核销2:可核销3:已核销 //写完细目表后改为2。
oYsd.QCBJ = "0"; //15 期初标记 0:否1:是
oYsd.BZ = "采购退货单生成应收单"; //16 备注
oYsd.CJR = userid; //17 创建人
oYsd.CJRQ = DateTime.Now; //18 创建日期
oYsd.XGR = userid; //19 修改人
oYsd.XGRQ = DateTime.Now; //20 修改日期
oYsd.GZBJ = "0"; //21 过账标记 0:未过账(否)1:已过账(是)
//oYsd.YSKSJ = ""; //22 应收款时间
oYsdMgr.AddCW_YSD(cn,oYsd);
//2222生成应收单细目表
for (int i=0; i<oList.Count; i++)
{
oCrkdXm = (Com.Ascs.Drp_KC.CRKDXM)oList[i]; //取出入库单细目
if(oCrkdXm.SJSL>0) //处入库的实际数量大于0
{
oCgthdXm = (CGTHDXM)oCgthMgr.GetCGTHDXM(oCrkd.YSDJBH,oCrkdXm.CPDM,oCrkdXm.ZLZK); //取销售定单细目
fYsje = oCrkdXm.SJSL * oCgthdXm.CPJG; //应收金额 = 实际数量*产品价格
fTotalJE = fTotalJE + fYsje;
oYsdXm.YSDH = oYsd.YSDH; //1 应收单号
oYsdXm.XH = GetYsdxmXH(cn,oYsd.YSDH); //2 序号
oYsdXm.CPDM = oCrkdXm.CPDM; //3 产品代码
oYsdXm.ZLZK = oCrkdXm.ZLZK; //4 质量状况
oYsdXm.DJ = oCgthdXm.CPJG; //5 单价
oYsdXm.SL = oCrkdXm.SJSL; //6 数量
oYsdXm.YSJE = fYsje; //7 应收金额
oYsdXm.YSYE = fYsje; //8 应收余额
oYsdXm.HXZT = "1"; //9 核销状态 1:可核销2:已核销
oYsdXmMgr.AddCW_YSDXM(cn,oYsdXm);
}
}
//3333修改主表的金额
oYsd.YSJE = fTotalJE; //8 应收金额
oYsd.SJYSJE = fTotalJE; //9 实际应收金额
oYsd.YSYE = fTotalJE; //10 应收余额
oYsd.ZTBJ = "2" ; //14 状态标记 ZTBJ nvarchar(1) N 1:待核销2:可核销3:已核销 //写完细目表后改为2。
oYsdMgr.UpdateCW_YSD(cn,oYsd);
#endregion
}
return true;
}
catch(Exception e)
{
LogService.Write ("Com.Ascs.Plp.CW.CW_FyMgr: MakeYSD(SqlConnection cn,string sCrkdh,string jgdm,string userid)");
LogService.Write (e.Message);
return false;
}
}
//end
//begin
/// <summary>
/// 根据应收单号,取最大序号+1
/// </summary>
///<param name="cn">cn</param>
///<param name="ysdh">应收单号</param>
///<returns>int XH</returns>
public int GetYsdxmXH(SqlConnection cn,string ysdh)
{
int iXh=1;
try
{
string sql;
sql = "select xh from cw_ysdxm where ysdh=@ysdh order by xh desc ";
SqlCommand cmd = new SqlCommand(sql,cn);
cmd.Parameters.Add ("@ysdh", ysdh);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
iXh = (int)dr[0];
iXh = iXh+1;
}
dr.Close();
return iXh;
}
catch(Exception e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -