| @ -0,0 +1,28 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Web.UI; | |||||
| using System.Web.UI.WebControls; | |||||
| using TSingSoft.WebControls2; | |||||
| namespace BWP.Web.Pages.B3_QiLianMuGe { | |||||
| class Test : AppBasePage { | |||||
| protected override void InitForm(System.Web.UI.HtmlControls.HtmlForm form) { | |||||
| form.Controls.Add(new LiteralControl("<h1>测试</h1>")); | |||||
| var vPanel = new VLayoutPanel(); | |||||
| form.Controls.Add(vPanel); | |||||
| var text = vPanel.Add(new DFTextBox()); | |||||
| text.TextMode = TextBoxMode.MultiLine; | |||||
| text.Width = 300; | |||||
| text.Height = 150; | |||||
| var submit = vPanel.Add(new TSButton()); | |||||
| submit.Text = "测试"; | |||||
| submit.Click += delegate { | |||||
| // K3CloudHelper.Login(); | |||||
| }; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,140 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Web.UI.WebControls; | |||||
| using B3_QiLianMuGe.BL; | |||||
| using BWP.B3ExportBase; | |||||
| using BWP.B3ExportBase.Utils; | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Frameworks.BO.NamedValueTemplate; | |||||
| using BWP.B3Sale.BO; | |||||
| using BWP.B3Sale.Utils; | |||||
| using BWP.Web.Pages.B3ExportBase; | |||||
| using BWP.Web.Utils; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using Forks.EnterpriseServices.SqlDoms; | |||||
| using Forks.Utils.Collections; | |||||
| using TSingSoft.WebControls2; | |||||
| namespace BWP.Web.Pages.B3_QiLianMuGe.ToK3Cloud | |||||
| { | |||||
| public class SaleOutStoreToK3CloudList : ExportBaseList<SaleOutStore, ISaleOutStoreToK3CloudBL> { | |||||
| protected override string Caption { | |||||
| get { return "销售出库单导金蝶云凭证"; } | |||||
| } | |||||
| public override string Url { | |||||
| get { return "~/B3_QiLianMuGe/ToK3Cloud/SaleOutStoreToK3CloudList.aspx"; } | |||||
| } | |||||
| protected override string EditUrl { | |||||
| get { | |||||
| return "B3Sale/Bills/SaleOutStore_/SaleOutStoreEdit.aspx"; | |||||
| } | |||||
| } | |||||
| protected override string DoExport(List<long> idList) { | |||||
| if (idList.Count == 0) { | |||||
| throw new ApplicationException("请选择单据!"); | |||||
| } | |||||
| if (_dfcUrl.IsEmpty) { | |||||
| throw new ApplicationException("请选择外部系统!"); | |||||
| } | |||||
| BL.Export(idList, long.Parse(_dfcUrl.Value) ); | |||||
| return BIFactory.GetLastMessage(); | |||||
| } | |||||
| private ChoiceBox _dfcUrl; | |||||
| // private DFDateInput _billDate; | |||||
| protected override void AddExportControl(HLayoutPanel hbox) { | |||||
| hbox.Add(new SimpleLabel("外部系统")); | |||||
| _dfcUrl = hbox.Add(new ChoiceBox()); | |||||
| _dfcUrl.DataKind = B3ExportBaseConsts.DataSources.外部系统; | |||||
| _dfcUrl.EnableInputArgument = true; | |||||
| _dfcUrl.SmartOrderEnabled = false; | |||||
| _dfcUrl.EnableTopItem = true; | |||||
| _dfcUrl.Width = 130; | |||||
| //hbox.Add(new SimpleLabel("日期")); | |||||
| //_billDate = hbox.Add(new DFDateInput()); | |||||
| //_billDate.Value = DateTime.Today; | |||||
| base.AddExportControl(hbox); | |||||
| } | |||||
| private ChoiceBox _deliverGoodsLineID; | |||||
| protected override void AddQueryControls(VLayoutPanel vPanel) { | |||||
| vPanel.Add(CreateDefaultBillQueryControls((panel, config) => { | |||||
| DFNamedValueInput<单据状态> billStateInput; | |||||
| panel.Add("BillState", billStateInput = QueryCreator.一般单据状态(mDFInfo.Fields["BillState"])); | |||||
| billStateInput.Value = 单据状态.已审核; | |||||
| panel.Add("OrderDate", QueryCreator.DateRange(mDFInfo.Fields["OrderDate"], mQueryContainer, "MinOrderDate", "MaxOrderDate")); | |||||
| panel.Add("LoadTime", QueryCreator.DateRange(mDFInfo.Fields["LoadTime"], mQueryContainer, "MinLoadTime", "MaxLoadTime")); | |||||
| panel.Add("ArriveTime", QueryCreator.DateRange(mDFInfo.Fields["ArriveTime"], mQueryContainer, "MinArriveTime", "MaxArriveTime")); | |||||
| panel.Add("Customer_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["Customer_ID"], B3SaleDataSources.客户)); | |||||
| panel.Add("AccountingUnit_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["AccountingUnit_ID"], B3FrameworksConsts.DataSources.授权会计单位全部)); | |||||
| panel.Add("Department_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["Department_ID"], B3FrameworksConsts.DataSources.授权部门全部)); | |||||
| panel.Add("Employee_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["Employee_ID"], B3FrameworksConsts.DataSources.授权员工全部)); | |||||
| panel.Add("Store_ID", QueryCreator.DFChoiceBox(mDFInfo.Fields["Store_ID"], B3FrameworksConsts.DataSources.授权仓库全部)); | |||||
| panel.Add("DeliverGoodsLine_ID", new SimpleLabel("送货线路排序"), _deliverGoodsLineID = new ChoiceBox() { DataKind = B3SaleDataSources.送货线路, Width = Unit.Empty, EnableTopItem = true, EnableInputArgument = true }); | |||||
| panel["DeliverGoodsLine_ID"].NotAutoAddToContainer = true; | |||||
| config.Add("OrderDate"); | |||||
| config.Add("LoadTime"); | |||||
| config.Add("ArriveTime"); | |||||
| config.Add("Customer_ID"); | |||||
| config.Add("AccountingUnit_ID"); | |||||
| config.Add("Department_ID"); | |||||
| config.Add("Employee_ID"); | |||||
| config.Add("Store_ID"); | |||||
| config.Add("DeliverGoodsLine_ID"); | |||||
| config.Add("BillState"); | |||||
| })); | |||||
| } | |||||
| protected override void AddDFBrowseGridColumn(DFBrowseGrid grid, string field) { | |||||
| base.AddDFBrowseGridColumn(grid, field); | |||||
| if (field == "BillState") { | |||||
| AddDFBrowseGridColumn(grid, "Customer_Name"); | |||||
| AddDFBrowseGridColumn(grid, "AccountingUnit_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Store_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Department_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Employee_Name"); | |||||
| AddDFBrowseGridColumn(grid, "OrderDate"); | |||||
| AddDFBrowseGridColumn(grid, "LoadTime"); | |||||
| AddDFBrowseGridColumn(grid, "ArriveTime"); | |||||
| AddDFBrowseGridColumn(grid, "AllUnitNum"); | |||||
| mBrowseGrid.Columns.EAdd(new DFBrowseGridColumn("Money")).SumMode = SumMode.Sum; | |||||
| AddDFBrowseGridColumn(grid, "DeliverGoodsLine_Name"); | |||||
| } | |||||
| } | |||||
| protected override DQueryDom GetQueryDom() { | |||||
| var dom = base.GetQueryDom(); | |||||
| if (!string.IsNullOrEmpty(_deliverGoodsLineID.Value)) { | |||||
| dom.OrderBy.Expressions.Clear(); | |||||
| var deliverGoodsLineDetail = new JoinAlias(typeof(DeliverGoodsLine_Detail)); | |||||
| dom.From.AddJoin(JoinType.Right, new DQDmoSource(deliverGoodsLineDetail), | |||||
| DQCondition.And( | |||||
| DQCondition.EQ(dom.From.RootSource.Alias, "Customer_ID", deliverGoodsLineDetail, "Customer_ID"), | |||||
| DQCondition.EQ(deliverGoodsLineDetail, "DeliverGoodsLine_ID", _deliverGoodsLineID.Value))); | |||||
| dom.OrderBy.Expressions.Add(DQOrderByExpression.Create(deliverGoodsLineDetail, "SequenceNumber", false)); | |||||
| } | |||||
| dom.EAddCheckedCondition(dom.From.RootSource.Alias); | |||||
| return dom; | |||||
| } | |||||
| protected override void OnLoad(EventArgs e) { | |||||
| base.OnLoad(e); | |||||
| if (!IsPostBack) { | |||||
| var tuple = ExportConfigUtil.LoadDefaultExtSystems(MethodID); | |||||
| if (tuple != null) { | |||||
| _dfcUrl.Value = tuple.Item1.ToString(); | |||||
| _dfcUrl.DisplayValue = tuple.Item2; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,81 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| <Field name="ID"/> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3Sale.BO.SaleOutStore, B3Sale"/> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="ID"/> | |||||
| <QBE paramName="ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Customer_ID"/> | |||||
| <QBE paramName="Customer_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="AccountingUnit_ID"/> | |||||
| <QBE paramName="AccountingUnit_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Department_ID"/> | |||||
| <QBE paramName="Department_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Employee_ID"/> | |||||
| <QBE paramName="Employee_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Store_ID"/> | |||||
| <QBE paramName="Store_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="IsLocked"/> | |||||
| <QBE paramName="IsLocked"/> | |||||
| </EQ> | |||||
| <Contains> | |||||
| <Field name="Remark"/> | |||||
| <QBE paramName="Remark"/> | |||||
| </Contains> | |||||
| <Contains> | |||||
| <Field name="CreateUser_Name"/> | |||||
| <QBE paramName="CreateUser_Name"/> | |||||
| </Contains> | |||||
| <Contains> | |||||
| <Field name="CheckUser_Name"/> | |||||
| <QBE paramName="CheckUser_Name"/> | |||||
| </Contains> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="OrderDate"/> | |||||
| <QBE paramName="MinOrderDate" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="OrderDate"/> | |||||
| <QBE paramName="MaxOrderDate"/> | |||||
| </LessThanOrEqual> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="LoadTime"/> | |||||
| <QBE paramName="MinLoadTime" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="LoadTime"/> | |||||
| <QBE paramName="MaxLoadTime"/> | |||||
| </LessThanOrEqual> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="CreateTime"/> | |||||
| <QBE paramName="MinCreateTime" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="CreateTime"/> | |||||
| <QBE paramName="MaxCreateTime"/> | |||||
| </LessThanOrEqual> | |||||
| <EQ> | |||||
| <Field name="BillState"/> | |||||
| <QBE paramName ="BillState"/> | |||||
| </EQ> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,10 @@ | |||||
| namespace B3_QiLianMuGe | |||||
| { | |||||
| public class B3QiLianMuGeConsts { | |||||
| public static class ExportIDOffsets | |||||
| { | |||||
| public const byte SaleOutStoreToK3Cloud = 1; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,72 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using BWP.B3ExportBase; | |||||
| using BWP.B3ExportBase.BL; | |||||
| using BWP.B3ExportBase.BL.K3Cloud; | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Sale.BO; | |||||
| using BWP.B3UnitedInfos.BO; | |||||
| using Forks.EnterpriseServices; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| namespace B3_QiLianMuGe.BL | |||||
| { | |||||
| [BusinessInterface(typeof(SaleOutStoreToK3CloudBL))] | |||||
| public interface ISaleOutStoreToK3CloudBL : IK3CloudVoucherBL<SaleOutStore> { | |||||
| } | |||||
| [LogicName("销售出库单导金蝶云凭证")] | |||||
| [ExportID(B3FrameworksConsts.DmoTypeIDBases.B3_QiLianMuGe, B3QiLianMuGeConsts.ExportIDOffsets.SaleOutStoreToK3Cloud)] | |||||
| public class SaleOutStoreToK3CloudBL : K3CloudVoucherBL<SaleOutStore>, ISaleOutStoreToK3CloudBL { | |||||
| public override short GetMethodID() { | |||||
| return B3FrameworksConsts.DmoTypeIDBases.B3_QiLianMuGe + B3QiLianMuGeConsts.ExportIDOffsets.SaleOutStoreToK3Cloud; | |||||
| } | |||||
| protected override Action<List<SaleOutStore>> FillDetail { | |||||
| get { | |||||
| return dmos => { | |||||
| var dmoType = typeof(SaleOutStore_Detail); | |||||
| var dom = new DQueryDom(new JoinAlias(dmoType)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("ID")); | |||||
| foreach (string property in MinDetailProperties) { | |||||
| dom.Columns.Add(DQSelectColumn.Field(property)); | |||||
| } | |||||
| var expressionList = new List<IDQExpression>(); | |||||
| foreach (var dmo in dmos) | |||||
| expressionList.Add(DQExpression.Value(dmo.ID)); | |||||
| dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("SaleOutStore_ID"), | |||||
| expressionList.ToArray())); | |||||
| var details = new List<SaleOutStore_Detail>(); | |||||
| details.Clear(); | |||||
| using (IDQDataReader reader = Session.ExecuteReader(dom)) { | |||||
| while (reader.Read()) { | |||||
| var detail = new SaleOutStore_Detail { | |||||
| ID = (long)reader[0] | |||||
| }; | |||||
| int i = 1; | |||||
| foreach (var property in MinDetailProperties) { | |||||
| dmoType.GetProperty(property).SetValue(detail, reader[i++], null); | |||||
| } | |||||
| details.Add(detail); | |||||
| } | |||||
| } | |||||
| var groups = details.GroupBy(x => x.SaleOutStore_ID); | |||||
| foreach (var gDetail in groups) { | |||||
| var firstDmo = dmos.FirstOrDefault(x => x.ID == gDetail.Key); | |||||
| if (firstDmo == null) | |||||
| continue; | |||||
| foreach (var billDetail in gDetail.OrderBy(x => x.ID)) { | |||||
| firstDmo.Details.Add(billDetail); | |||||
| } | |||||
| } | |||||
| }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,85 @@ | |||||
| from BWP.B3ExportBase.BL.K3Cloud import Voucher ,VoucherEntity,FDetailid | |||||
| from System.Collections.Generic import List ,Dictionary | |||||
| from System import Int64 ,Object ,Convert | |||||
| from BWP.B3ExportBase import B3ExportBaseConsts; | |||||
| class BLMethodEvents(BLMethodEventsBase): | |||||
| def before(self): | |||||
| self.proxy.LoadFullDom = 0 | |||||
| self.proxy.MinDmoProperties.Add("ID"); | |||||
| self.proxy.MinDmoProperties.Add("Customer_ID"); | |||||
| self.proxy.MinDmoProperties.Add("Customer_Name"); | |||||
| self.proxy.MinDmoProperties.Add("Money"); | |||||
| self.proxy.MinDmoProperties.Add("CheckTime"); | |||||
| self.proxy.MinDetailProperties.Add("SaleOutStore_ID"); | |||||
| self.proxy.MinDetailProperties.Add("SaleGoods_ID"); | |||||
| self.proxy.MinDetailProperties.Add("UnitNum");#报价数量 | |||||
| self.proxy.MinDetailProperties.Add("Price");#单价 | |||||
| self.proxy.MinDetailProperties.Add("RebateMoney"); #不含税金额 | |||||
| self.proxy.MinDetailProperties.Add("Money"); #金额 | |||||
| def execute(self): | |||||
| cusDmoType = B3ExportBaseConsts.DmoTypeID.客户; | |||||
| goodsDmoType = B3ExportBaseConsts.DmoTypeID.存货; | |||||
| i = 0 | |||||
| for dmo in dmos: | |||||
| ids = List[Int64](); | |||||
| ids.Add(dmo.ID) | |||||
| idsDic.Add(i,ids) | |||||
| i = i + 1 | |||||
| voucher = Voucher() | |||||
| voucherContainer.Model.Add(voucher); | |||||
| voucher.FAccountBookID.Add("FNumber", "001"); #账簿 | |||||
| voucher.FVOUCHERGROUPID.Add("FNumber", "PRE001"); #凭证字 | |||||
| voucher.FVOUCHERGROUPNO = "1"; #凭证号 默认 | |||||
| voucher.FDocumentStatus = "Z"; | |||||
| voucher.FYEAR = gToday.Year; #会计年度 | |||||
| voucher.FPERIOD = gToday.Month; #期间 | |||||
| #借方-------------------------------------------------------- | |||||
| entry = VoucherEntity(); | |||||
| entry.FEXPLANATION = "收" + dmo.Customer_Name + "货款 " + self.proxy.GetDateTime(dmo.CheckTime,"yyyy-MM-dd"); | |||||
| entry.FACCOUNTID.Add("FNumber", "1122.01"); #会计科目 | |||||
| entry.FCURRENCYID.Add("FNumber", "PRE001"); #币别 | |||||
| entry.FEXCHANGERATETYPE.Add("FNumber", "HLTX01_SYS");#汇率类型 | |||||
| entry.FEXCHANGERATE = 1.0; #汇率 | |||||
| entry.FAMOUNTFOR = Convert.ToDecimal(dmo.Money) #原币金额 | |||||
| entry.FDEBIT = Convert.ToDecimal(dmo.Money) #借方金额 | |||||
| entry.FDetailID = FDetailid(); #核算维度 | |||||
| cusNo = self.proxy.GetExtFieldByName(dmo.Customer_ID,cusDmoType ,"ExternalField1"); | |||||
| entry.FDetailID.FDETAILID__FFLEX6 = Dictionary[str,Object](); | |||||
| entry.FDetailID.FDETAILID__FFLEX6.Add("FNumber", cusNo); | |||||
| voucher.FEntity.Add(entry); | |||||
| #贷方------------------------------------------------------------ | |||||
| for detail in dmo.Details: | |||||
| entry2 = VoucherEntity(); | |||||
| entry2.FEXPLANATION = "收" + dmo.Customer_Name + "货款 " + self.proxy.GetDateTime(dmo.CheckTime,"yyyy-MM-dd") | |||||
| entry2.FACCOUNTID.Add("FNumber", "6001.01"); | |||||
| entry2.FCURRENCYID.Add("FNumber", "PRE001"); | |||||
| entry2.FEXCHANGERATETYPE.Add("FNumber", "HLTX01_SYS"); | |||||
| entry2.FEXCHANGERATE = 1.0; | |||||
| entry2.FAMOUNTFOR = Convert.ToDecimal(detail.RebateMoney) | |||||
| entry2.FCREDIT = Convert.ToDecimal(detail.RebateMoney) | |||||
| entry2.FPrice = Convert.ToDecimal(detail.Price) | |||||
| entry2.FQty = Convert.ToDecimal( detail.UnitNum) | |||||
| entry2.FUnitId.Add("FNUMBER", "kg"); #单位 | |||||
| entry2.FDetailID = FDetailid(); #核算维度 | |||||
| goodsNo = self.proxy.GetExtFieldByName(detail.SaleGoods_ID,goodsDmoType ,"ExternalField1"); | |||||
| entry2.FDetailID.FDETAILID__FFLEX8 = Dictionary[str,Object](); | |||||
| entry2.FDetailID.FDETAILID__FFLEX8.Add("FNumber", goodsNo); | |||||
| voucher.FEntity.Add(entry2); | |||||
| # 摘要:收【客户名】货款【审核日期】 | |||||
| # 科目编号:1122.01 应收账款_应收货款 | |||||
| # 核算维度:金蝶系统中客户编码/客户名称(对照) | |||||
| # 借方金额:销售总金额 | |||||
| # 摘要:收【客户名】货款【审核日期】 | |||||
| # 科目编号:6001.01 主营业务收入_其他_冷鲜牛肉 | |||||
| # 核算维度:金蝶系统中存货编码/存货名称(对照) | |||||
| # 单位:千克 | |||||
| # 单价:单价 | |||||
| # 数量:报价数量 | |||||
| # 贷方金额:金额 | |||||