From 85b59ba5c6e2b2ad0cce127d414afef187eddb0b Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期四, 14 十一月 2024 15:31:20 +0800
Subject: [PATCH] update

---
 jrj/xframe/kobject/kcell.hpp       |  172 ++++++++++++-----------
 jrj/project/business/QuoteFile.cpp |  215 +++++++++++++++++++++++++++++-
 jrj/xframe/xcontrol/xcell.hpp      |   16 ++
 3 files changed, 313 insertions(+), 90 deletions(-)

diff --git a/jrj/project/business/QuoteFile.cpp b/jrj/project/business/QuoteFile.cpp
index c0fa286..c363769 100644
--- a/jrj/project/business/QuoteFile.cpp
+++ b/jrj/project/business/QuoteFile.cpp
@@ -1853,7 +1853,7 @@
 						}
 						dw_cell.SetRowColumn(lastrow, 1);
 						dw_cell.SetAnchorRowColumn(lastrow, 1);
-						SendCtrlCmd(dw_cell, L"xmFormatCellDeleteRow");
+						//SendCtrlCmd(dw_cell, L"xmFormatCellDeleteRow");
 						drow++;
 					}
 				}
@@ -2145,16 +2145,16 @@
 				SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
 				SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
 				SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
-				SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
-				SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
-				SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
+				//SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
+				//SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
+				//SendCtrlCmd(cell1, L"xmFormatCellInsertCol");
 
 				cell1.SetItemString(headrow, purchremarkcol + 1, L"供应商");
 				cell1.SetItemString(headrow, purchremarkcol + 2, L"类型");
 				cell1.SetItemString(headrow, purchremarkcol + 3, L"价格");
-				cell1.SetItemString(headrow, purchremarkcol + 4, L"供应商1");
-				cell1.SetItemString(headrow, purchremarkcol + 5, L"类型1");
-				cell1.SetItemString(headrow, purchremarkcol + 6, L"价格1");
+				//cell1.SetItemString(headrow, purchremarkcol + 4, L"供应商1");
+				//cell1.SetItemString(headrow, purchremarkcol + 5, L"类型1");
+				//cell1.SetItemString(headrow, purchremarkcol + 6, L"价格1");
 
 				int colRemark = getItemCol(cell1, headrow, L"Remarks");
 				cell1.SetRowColumn(1, colRemark);
@@ -3561,10 +3561,59 @@
 		return 1;
 	}
 
+	int OnDelBOMItem()
+	{
+		int startRow = getItemHeadRow(dw_cell);
+		int headrow = startRow;
+		if (startRow < 1) return 1;
+		startRow++;
+		int row = dw_cell.GetRow();
+
+		int colPurchPrice1 = getItemCol(dw_cell, headrow, L"价格1");
+		int colPurchPrice2 = getItemCol(dw_cell, headrow, L"价格2");
+		int colPurchPrice3 = getItemCol(dw_cell, headrow, L"价格3");
+		if (colPurchPrice3 > 0)
+		{
+			dw_cell.SetRowColumn(row, colPurchPrice3 - 2);
+			dw_cell.SetAnchorRowColumn(row, colPurchPrice3 - 2);
+
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			return 1;
+		}
+
+		if (colPurchPrice2 > 0)
+		{
+			dw_cell.SetRowColumn(row, colPurchPrice2 -2);
+			dw_cell.SetAnchorRowColumn(row, colPurchPrice2 -2);
+
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+
+			return 1;
+		}
+
+		if (colPurchPrice1 > 0)
+		{
+			dw_cell.SetRowColumn(row, colPurchPrice1 - 2);
+			dw_cell.SetAnchorRowColumn(row, colPurchPrice1 - 2);
+
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+
+			return 1;
+		}
+		return 1;
+	}
+
 	//命令发布函数
 	int OnCmdDispatch(xstring comdid)
 	{
 		if (comdid == L"xmAddBOMItem") return OnAddBOMItem();
+		if (comdid == L"xmDelBOMItem") return OnDelBOMItem();
 		if (comdid == L"xmQuoteBill")
 		{
 			if (dw_base.GetItemString(1, L"CustomerID") == L"")
@@ -4922,6 +4971,156 @@
 		return str.mid(pos, epos - pos);
 	}
 
+	int AdjustView(xcell& dw_cell)
+	{
+		int startRow = getItemHeadRow(dw_cell);
+
+		//没有找到商品行的标题
+		if (startRow < 1) return 0;
+		startRow++;
+
+		int colItemDesc = getItemCol(dw_cell, startRow - 1, L"产品信息");
+		int colPhoto = getItemCol(dw_cell, startRow - 1, L"Photo");
+
+		bool newItemDesc = false;
+		if (colItemDesc < 0)
+		{
+			dw_cell.SetRowColumn(1, colPhoto+1);
+			dw_cell.SetAnchorRowColumn(1, colPhoto+1);
+			SendCtrlCmd(dw_cell, L"xmFormatCellInsertCol");
+
+			colItemDesc = colPhoto + 1;
+			dw_cell.SetItemString(startRow - 1, colItemDesc, L"产品信息");
+			newItemDesc = true;
+		}
+
+		if (newItemDesc)
+		{
+			int colSKUID = getItemCol(dw_cell, startRow - 1, L"SKUID");
+			int colItemNo = getItemCol(dw_cell, startRow - 1, L"我司型号,ItemNo");
+			int colCustomerItemNo = getItemCol(dw_cell, startRow - 1, L"客户型号,Customer ItemNo,Customer Item No");
+			int colItemName = getItemCol(dw_cell, startRow - 1, L"Product Description,Product Name,Item Name");
+			int colItemCName = getItemCol(dw_cell, startRow - 1, L"中文品名");
+			int colItemSpec = getItemCol(dw_cell, startRow - 1, L"Specifications,规格,产品规格");
+			int colBuyerPrice = getItemCol(dw_cell, startRow - 1, L"采购价,采购价格");
+			int colBuyer = getItemCol(dw_cell, startRow - 1, L"采购人员");
+			int colQty = getItemCol(dw_cell, startRow - 1, L"Qty");
+			int colPackage = getItemCol(dw_cell, startRow - 1, L"Package");
+			int colInnerOuter = getItemCol(dw_cell, startRow - 1, L"装箱数(内/外)");
+
+			int colBuyerMOQ = getItemCol(dw_cell, startRow - 1, L"MOQ");
+			int colBuyerRemark = getItemCol(dw_cell, startRow - 1, L"采购To业务备注");
+			int colFactoryImage = getItemCol(dw_cell, startRow - 1, L"工厂图片");
+			int colGWT = getItemCol(dw_cell, startRow - 1, L"毛重,毛重(KG)");
+			int colNWT = getItemCol(dw_cell, startRow - 1, L"净重,净重(KG)");
+			int colVolDesc = getItemCol(dw_cell, startRow - 1, L"体积描述,长X宽X高,长X宽X高(CM)");
+			int colVol = getItemCol(dw_cell, startRow - 1, L"体积,体积(M3)");
+			int col40HQ = getItemCol(dw_cell, startRow - 1, L"40HQ,QTY(40HQ)");
+			int colPurchedDate = getItemCol(dw_cell, startRow - 1, L"采购提交业务时间");
+			int colPhoto1 = getItemCol(dw_cell, startRow - 1, L"工厂图片");
+			int colProductInfo = getItemCol(dw_cell, startRow - 1, L"业务部产品信息");
+			int colProductInfo1 = getItemCol(dw_cell, startRow - 1, L"采购部产品信息");
+
+			int colBOMType = getItemCol(dw_cell, startRow - 1, L"类型");
+			int colBOMType1 = getItemCol(dw_cell, startRow - 1, L"类型1");
+			int colSaler = getItemCol(dw_cell, startRow - 1, L"业务员");
+			int colSaletoBuyerRemark = getItemCol(dw_cell, startRow - 1, L"业务To采购备注");
+
+			int colSupplier1 = getItemCol(dw_cell, startRow - 1, L"供应商1");
+			int colBuyPrice1 = getItemCol(dw_cell, startRow - 1, L"价格1");
+
+			int colSaleSendDate = getItemCol(dw_cell, startRow - 1, L"业务发送采购时间");
+
+			dw_cell.SetColumnWidth(colSKUID, 0);
+			dw_cell.SetColumnWidth(colItemNo, 0);
+			dw_cell.SetColumnWidth(colCustomerItemNo, 0);
+			dw_cell.SetColumnWidth(colItemName, 0);
+			dw_cell.SetColumnWidth(colItemCName, 0);
+			dw_cell.SetColumnWidth(colBuyerRemark, 0);
+			dw_cell.SetColumnWidth(colPackage, 0);
+			dw_cell.SetColumnWidth(colQty, 0);
+			dw_cell.SetColumnWidth(col40HQ, 0);
+			dw_cell.SetColumnWidth(colInnerOuter, 0);
+			dw_cell.SetColumnWidth(colSaler, 0);
+			dw_cell.SetColumnWidth(colSaletoBuyerRemark, 0);
+			dw_cell.SetColumnWidth(colProductInfo, 0);
+			dw_cell.SetColumnWidth(colSaler, 0);
+
+			dw_cell.SetColumnWidth(colBOMType, 0);
+			dw_cell.SetColumnWidth(colBOMType1, 0);
+
+			dw_cell.SetColumnWidth(colItemDesc, 160);
+
+			bool bPrice1 = false;
+			for (int row = startRow; row <= dw_cell.GetValidRow(); row++)
+			{
+				if (dw_cell.GetItemString(row, colSKUID) != L"")
+				{
+					xstring itemDesc = L"SKUID:" + dw_cell.GetItemString(row, colSKUID);
+					if (dw_cell.GetItemString(row, colItemNo) != L"")
+						itemDesc += L"\r\nItem No: " + dw_cell.GetItemString(row, colItemNo);
+					if (dw_cell.GetItemString(row, colItemNo) != L"")
+						itemDesc += L"\r\nCustomer Item No: " + dw_cell.GetItemString(row, colCustomerItemNo);
+					if (dw_cell.GetItemString(row, colItemName) != L"")
+						itemDesc +=  L"\r\nItem Name:" + dw_cell.GetItemString(row, colItemName);
+					if (dw_cell.GetItemString(row, colItemCName) != L"")
+						itemDesc += L"\r\n产品名称:" + dw_cell.GetItemString(row, colItemCName);
+
+					if (dw_cell.GetItemString(row, colQty) != L"")
+						itemDesc += L"\r\n数量:" + dw_cell.GetItemString(row, colQty);
+					if (dw_cell.GetItemString(row, colPackage) != L"")
+						itemDesc += L"\r\n包装:" + dw_cell.GetItemString(row, colPackage);
+					if (dw_cell.GetItemString(row, colInnerOuter) != L"")
+						itemDesc += L"\r\n装箱数(内/外):" + dw_cell.GetItemString(row, colInnerOuter);
+
+					if (dw_cell.GetItemString(row, colProductInfo) != L"")
+						itemDesc += L"\r\n\r\n规格:\r\n" + dw_cell.GetItemString(row, colProductInfo);
+					if (dw_cell.GetItemString(row, colSaletoBuyerRemark) != L"")
+						itemDesc += L"\r\n\r\n采购要求:\r\n" + dw_cell.GetItemString(row, colSaletoBuyerRemark);
+					dw_cell.SetItemString(row, colItemDesc, itemDesc);
+
+					if (!bPrice1)
+					{
+						if (dw_cell.GetItemString(row, colSupplier1) != L"") bPrice1 = true;
+						else if (dw_cell.GetItemString(row, colBuyPrice1) != L"") bPrice1 = true;
+					}
+				}
+			}
+			if (!bPrice1)
+			{
+				dw_cell.SetRowColumn(1, colSupplier1);
+				dw_cell.SetAnchorRowColumn(1, colSupplier1);
+				SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+				SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+				SendCtrlCmd(dw_cell, L"xmFormatCellDeleteCol");
+			}
+
+			dw_cell.SetRowColumn(1, 1);
+			dw_cell.SetAnchorRowColumn(startRow-1, 1);
+			SendCtrlCmd(dw_cell, L"xmEditCopy");
+
+			dw_cell.SetRowColumn(1, colPhoto);
+			dw_cell.SetAnchorRowColumn(startRow - 1, colPhoto);
+			SendCtrlCmd(dw_cell, L"xmEditPaste");
+
+			dw_cell.SetRowColumn(1, 2);
+			dw_cell.SetAnchorRowColumn(startRow - 1, 2);
+			SendCtrlCmd(dw_cell, L"xmEditCopy");
+
+			dw_cell.SetRowColumn(1, colPhoto+1);
+			dw_cell.SetAnchorRowColumn(startRow - 1, colPhoto+1);
+			SendCtrlCmd(dw_cell, L"xmEditPaste");
+
+			dw_cell.SetItemString(2, colBuyerPrice, L"业务员");
+			dw_cell.SetItemString(3, colBuyerPrice, L"发送日期:");
+			dw_cell.SetItemString(2, colBuyerPrice+1, dw_cell.GetItemString(startRow, colSaler));
+			dw_cell.SetItemString(3, colBuyerPrice+1, dw_cell.GetItemString(startRow, colSaleSendDate));
+		}
+		
+
+		return 1;
+	}
+
 	int onload()
 	{
 		SetArg();
@@ -5063,6 +5262,8 @@
 			xnode anode = GetAgentNode(L"tabheader");
 			anode.SetLayerFlow(0x00000100);
 			dw_cell.SetColumnCount(dw_cell.GetValidCol() + 6);
+			//dw_cell.SetFixedCols(7);
+			AdjustView(dw_cell);
 		}
 		else
 			dw_cell.SetColumnCount(dw_cell.GetValidCol()+3);
diff --git a/jrj/xframe/kobject/kcell.hpp b/jrj/xframe/kobject/kcell.hpp
index 4288ee4..e9a8dc9 100644
--- a/jrj/xframe/kobject/kcell.hpp
+++ b/jrj/xframe/kobject/kcell.hpp
@@ -3,96 +3,102 @@
 #include "kcontrol.hpp"
 namespace Hxsoft {	namespace XFrame {	namespace XOffice {	namespace XCell{
 
-class  IXCell : public IXFControl
-{
-public:
-	int GetRow();
-	int GetColumn();
+	class  IXCell : public IXFControl
+	{
+	public:
+		int GetRow();
+		int GetColumn();
 
-	int GetAnchorRow();
-	int GetAnchorCol();
+		int GetAnchorRow();
+		int GetAnchorCol();
 
-	int SetRowColumn(int ARow, int ACol);
-	int SetAnchorRowColumn(int ARow, int ACol);
+		int SetRowColumn(int ARow, int ACol);
+		int SetAnchorRowColumn(int ARow, int ACol);
 
-	int GetRowCount();
-	int SetRowCount(int columnCount);
+		int GetRowCount();
+		int SetRowCount(int columnCount);
 
-	int GetColumnCount();
-	int SetColumnCount(int columnCount);
+		int GetColumnCount();
+		int SetColumnCount(int columnCount);
 
-	LPCTSTR GetItemString(int ARow, int ACol);
-	int SetItemString(int ARow, int ACol, LPTSTR pText);
-	LPCTSTR GetItemDisplayString(int ARow, int ACol);
-	int SetItemDisplayString(int ARow, int ACol, LPTSTR pText);
+		LPCTSTR GetItemString(int ARow, int ACol);
+		int SetItemString(int ARow, int ACol, LPTSTR pText);
+		LPCTSTR GetItemDisplayString(int ARow, int ACol);
+		int SetItemDisplayString(int ARow, int ACol, LPTSTR pText);
 
-	int SetBorder(int nBorder);
+		int SetBorder(int nBorder);
 
-	int Copy();
-	int Cut();
-	int Paste();
+		int Copy();
+		int Cut();
+		int Paste();
 
-	int GetColumnWidth(int nCol);
-	bool SetColumnWidth(int nCol, int nWidth);
-	int GetRowHeight(int nRow);
-	bool SetRowHeight(int nRow, int nHeight);
-public:
-	int SetRowSelectorWidth(int nWidth);
-	int ResetRowSelector();
-	int GetRowSelectorWidth();
-	int GetRowSelectorDefaultWidth();
+		int GetColumnWidth(int nCol);
+		bool SetColumnWidth(int nCol, int nWidth);
+		int GetRowHeight(int nRow);
+		bool SetRowHeight(int nRow, int nHeight);
+	public:
+		int SetRowSelectorWidth(int nWidth);
+		int ResetRowSelector();
+		int GetRowSelectorWidth();
+		int GetRowSelectorDefaultWidth();
 
-	int SetColHeaderHeight(int nHeight);
-	int GetColHeaderDefaultHeight();
-	int ResetColHeaderHeight();
-	int GetColHeaderHeight();
-public:
-	LPTSTR GetCellProps(int nRow, int nCol); //得到单元整体XML属性
-	int SetCellProps(int nRow, int nCol, LPCTSTR pXmlProp); //得到单元整体XML属性
-	LPTSTR GetCellProp(int nRow, int nCol, LPCTSTR pItem); //得到单元属性
-	int SetCellProp(int nRow, int nCol, LPCTSTR pItem, LPCTSTR pProp);//得到单元属性
-public:
-	LPTSTR GetHtml();
-	LPTSTR GetData();
-public:
-	void* GetSheetSvr();
-public:
-	void		SetSchmaSource(LPCTSTR pSchema);
-	LPCTSTR		GetSchemaSource();
-	void		SetSchmaString(LPCTSTR pSchemaStr);
-	LPCTSTR		GetSchemaString();
-public:
-	int			GetSpanRight(int ARow, int ACol);
-	int			GetSpanBottom(int ARow, int ACol);
-	int			GetSpanLeft(int ARow, int ACol);
-	int			GetSpanTop(int ARow, int ACol);
-	bool		IsSpanCell(int ARow, int ACol);
-public:
-	int			GetValidRow();
-	int			GetValidCol(int ARow);
-	int			GetValidRowCol(int& ARow, int& ACol);
-	int			GetValidCol();
-public:
-	int			LoadTemplate(KXMLDOMDocument  pDoc, LPTSTR strState);
-	int			LoadTemplate(KXMLDOMElement pElement, LPTSTR strState);
-public:
-	int SaveFileAs();
-	int SaveFile();
-	int SaveFile(wchar_t* fileName);
-public:
-	int OpenFile(wchar_t* fileName);
-	int OpenFile();
-public:
-	wchar_t* m_pFileName;
-public:
-	int SetReadOnly(bool bReadOnly);
-	int SetRunState();
-	int SetRunState(int runstate);
-public:
-	void SetEditUpperMode(bool upper);
-	bool GetEditUpperMode();
-public:
-	LPCTSTR GetSortColumns();
-	void SortData(LPCTSTR sortColumn, LPTSTR strType, bool bAsc);
-};
+		int SetColHeaderHeight(int nHeight);
+		int GetColHeaderDefaultHeight();
+		int ResetColHeaderHeight();
+		int GetColHeaderHeight();
+	public:
+		LPTSTR GetCellProps(int nRow, int nCol); //得到单元整体XML属性
+		int SetCellProps(int nRow, int nCol, LPCTSTR pXmlProp); //得到单元整体XML属性
+		LPTSTR GetCellProp(int nRow, int nCol, LPCTSTR pItem); //得到单元属性
+		int SetCellProp(int nRow, int nCol, LPCTSTR pItem, LPCTSTR pProp);//得到单元属性
+	public:
+		LPTSTR GetHtml();
+		LPTSTR GetData();
+	public:
+		void* GetSheetSvr();
+	public:
+		void		SetSchmaSource(LPCTSTR pSchema);
+		LPCTSTR		GetSchemaSource();
+		void		SetSchmaString(LPCTSTR pSchemaStr);
+		LPCTSTR		GetSchemaString();
+	public:
+		int			GetSpanRight(int ARow, int ACol);
+		int			GetSpanBottom(int ARow, int ACol);
+		int			GetSpanLeft(int ARow, int ACol);
+		int			GetSpanTop(int ARow, int ACol);
+		bool		IsSpanCell(int ARow, int ACol);
+	public:
+		int			GetValidRow();
+		int			GetValidCol(int ARow);
+		int			GetValidRowCol(int& ARow, int& ACol);
+		int			GetValidCol();
+	public:
+		int			LoadTemplate(KXMLDOMDocument  pDoc, LPTSTR strState);
+		int			LoadTemplate(KXMLDOMElement pElement, LPTSTR strState);
+	public:
+		int SaveFileAs();
+		int SaveFile();
+		int SaveFile(wchar_t* fileName);
+	public:
+		int OpenFile(wchar_t* fileName);
+		int OpenFile();
+	public:
+		wchar_t* m_pFileName;
+	public:
+		int SetReadOnly(bool bReadOnly);
+		int SetRunState();
+		int SetRunState(int runstate);
+	public:
+		void SetEditUpperMode(bool upper);
+		bool GetEditUpperMode();
+	public:
+		LPCTSTR GetSortColumns();
+		void SortData(LPCTSTR sortColumn, LPTSTR strType, bool bAsc);
+	public:
+		int GetFixedRows();
+		void    SetFixedRows(int value);
+	public:
+		int GetFixedCols();
+		void SetFixedCols(int value);
+	};
 }}}}
diff --git a/jrj/xframe/xcontrol/xcell.hpp b/jrj/xframe/xcontrol/xcell.hpp
index 39d95f4..92911c7 100644
--- a/jrj/xframe/xcontrol/xcell.hpp
+++ b/jrj/xframe/xcontrol/xcell.hpp
@@ -284,6 +284,22 @@
 	{ return GetKCell()->SetReadOnly(bReadOnly);
 
 	}
+	int GetFixedRows()
+	{
+		return GetKCell()->GetFixedRows();
+	}
+	void    SetFixedRows(int value = 1)
+	{
+		return GetKCell()->SetFixedRows(value);
+	}
+	int GetFixedCols()
+	{
+		return GetKCell()->GetFixedCols();
+	}
+	void SetFixedCols(int value = 1)
+	{
+		return GetKCell()->SetFixedCols(value);
+	}
 };
 
 

--
Gitblit v1.9.3