ZH/Case-Study-01-Journal-02
Contents实施日志-02
2010年11月2010-11-05销售基础设置
讨论栏2010-11-06报表中文显示
1. 首先检查使用中的JVM版本。 $ java -version 2. 发现是OpenJDK。于是执行以下命令转为SunJDK。 # update-alternatives --config java 3. 安装中文字体 # aptitude install ttf-wqy-zenhei 4. 设置JVM中文字体 # cd /usr/lib/jvm/java-6-sun/jre/lib/ # mkdir fonts/fallback # ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc fonts/fallback/wqy-zenhei.ttf 5. 系统退出帐户重新登录即可,重新启动JBOSS。 讨论栏2010-11-07销售模块实施分析
前期准备工作
几点感受
2Pack打包工具
讨论栏2010-11-082Pack打包工具
SELECT * FROM ad_menu WHERE ad_menu_id=xxxxxxx(数字);
讨论栏一楼导出menu其实没有什么意义,因为menu的节点位置怎么都得再次确定,很难保证所有的节点位置都保持一致的,你设置过几次menu就知道了 打印格式没有用过,我一直认为adempiere系列中的报表(除了财务报表)很垃圾,所以使用的都是jasperreports的扩展,建议你也不要使用打印格式。 --2010年11月08日 aoslee 二楼谢谢aoslee的建议! 关于Menu,既然用了2Pack,就希望能一切自动进行,不必劳神手工操作。 我接下来会布署JasperReports。利用ADempiere自身Report功能来设置复杂报表的确比较费事。 --Peanut 三楼> 利用ADempiere自身Report功能来设置复杂报表的确比较费事。 其實如果你善用 StoredProcedure (Oracle/PostgresDB) 可以讓 Master/Detail(兩階或是三階/四階統計表)簡單串接. 以下簡單案例 : -- Function: adempiere.t_rj_productbp(numeric) -- DROP FUNCTION adempiere.t_rj_productbp(numeric); CREATE OR REPLACE FUNCTION adempiere.t_rj_productbp(p_ad_pinstacne_id numeric) RETURNS numeric AS $BODY$ DECLARE cur_parameter record; cur_1 record; v_resultstr VARCHAR (2000); v_message VARCHAR (2000); v_result numeric := 1; v_record_id numeric; v_ad_user_id numeric; p_date date; p_date_to date; p_c_bpartner_id numeric; p_c_bpartner_id_to numeric; p_m_product_id numeric; p_m_product_id_to numeric; v_nextno numeric; p_pdvalue_x VARCHAR (40); p_pdvalue VARCHAR (40); p_pdvalue_to VARCHAR (40); p_bpvalue_x VARCHAR (40); p_bpvalue VARCHAR (40); p_bpvalue_to VARCHAR (40); BEGIN p_date := null; p_date_to := null; p_c_bpartner_id :=0; p_c_bpartner_id_to :=0; p_m_product_id :=0; p_m_product_id_to :=0; FOR cur_parameter IN SELECT i.record_, i.ad_user_id, i.parametername, p.p_string, p.p_string_to, p.p_number, p.p_number_to, p.p_date , p.p_date_to FROM adempiere.ad_pinstance i LEFT OUTER JOIN adempiere.ad_pinstance_para p ON( i.ad_pinstance_id = p.ad_pinstance_id) WHERE i.ad_pinstance_id = p_ad_pinstacne_id ORDER BY p.SeqNo LOOP v_record_id := cur_parameter.Record_id; v_ad_user_id := cur_parameter.ad_user_id; IF (cur_parameter.parametername = 'DateOrdered' ) THEN p_date := cur_parameter.p_date; p_date_to := cur_parameter.p_Date_TO; ELSIF (cur_parameter.parametername = 'C_BPartner_ID') THEN p_c_bpartner_id := cur_parameter.p_number; p_c_bpartner_id_to := cur_parameter.p_number_to; ELSIF (cur_parameter.parametername = 'M_Product_ID' ) THEN p_m_product_id := cur_parameter.p_number; p_m_product_id_to := cur_parameter.p_number_to; -- ELSE -- DBMS_OUTPUT.put_line ('*** Unknown Parameter=' || P.parametername); END IF; END LOOP; BEGIN--將客戶內碼(ID)改為:客戶編號(Value) IF (p_c_bpartner_id > 0) THEN SELECT value INTO p_bpvalue FROM c_bpartner WHERE c_bpartner_id=p_c_bpartner_id; ELSE p_bpvalue := ''; END IF; EXCEPTION WHEN OTHERS THEN p_bpvalue := ''; -- RAISE NOTICE '%',SQLERRM; END; BEGIN--將客戶內碼(ID)改為:客戶編號(Value) IF (p_c_bpartner_id_to > 0) THEN SELECT value INTO p_bpvalue_to FROM c_bpartner WHERE c_bpartner_id=p_c_bpartner_id_to; ELSE p_bpvalue_to := ''; END IF; EXCEPTION WHEN OTHERS THEN p_bpvalue_to := ''; -- RAISE NOTICE '%',SQLERRM; END; BEGIN --將產品內碼(ID)改為:產品編號(Value) IF (p_m_product_id > 0) THEN SELECT value INTO p_pdvalue FROM m_product WHERE m_product_id=p_m_product_id; ELSE p_pdvalue := ''; END IF; EXCEPTION WHEN OTHERS THEN p_pdvalue := ''; -- RAISE NOTICE '%',SQLERRM; END; BEGIN --將產品內碼(ID)改為:產品編號(Value) IF (p_m_product_id_to > 0) THEN SELECT value INTO p_pdvalue_to FROM m_product WHERE m_product_id=p_m_product_id_to; ELSE p_pdvalue_to := ''; END IF; EXCEPTION WHEN OTHERS THEN p_pdvalue_to := ''; -- RAISE NOTICE '%',SQLERRM; END; if p_bpvalue > b_bpvalue_to then p_bpvalue_x := p_bpvalue_to; p_bpvalue_to := p_bpvalue; p_bpvalue := b_bpvalue_x; end if; if p_pdvalue > b_pdvalue_to then p_pdvalue_x := p_pdvalue_to; p_pdvalue_to := p_pdvalue; p_pdvalue := p_pdvalue_x; end if; --要用客戶編號 Value 區間篩選客戶(註:用客戶內碼 ID 將引發區段錯亂) FOR cur_1 IN SELECT p.ad_client_id,p.ad_org_id, p.m_product_id, p.value AS pdvalue, p.name AS pdname, b.c_bpartner_id, b.value AS bpvalue, b.name AS bpname FROM adempiere.m_product p LEFT OUTER JOIN adempiere.c_orderline ol ON( p.m_product_id = ol.m_product_id) LEFT OUTER JOIN adempiere.c_order o ON( ol.c_order_id = o.c_order_id) LEFT OUTER JOIN adempiere.c_bpartner b ON( o.c_bpartner_id = bp.c_bpartner_id) WHERE 1=1 AND (p_pdvalue ='' OR p.value BETWEEN p_pdvalue AND p_pdvalue_to) AND (p_bpvalue ='' OR b.value BETWEEN p_bpvalue AND p_bpvalue_to) ORDER BY p.value,b.value LOOP v_nextno := adempiere.ad_sequence_next('T_RJ_ProductBP','Y'); INSERT INTO adempiere.t_rj_productbp (ad_pinstance_id ,-- numeric(10,0), t_rj_productbp_id ,-- numeric(10,0), ad_client_id ,-- numeric(10,0), ad_org_id ,-- numeric(10,0), isactive ,-- char(1), created ,-- date, createdby ,-- numeric(10,0), updated ,-- date, updatedby ,-- numeric(10,0), m_product_id ,-- numeric(10,0), pdvalue ,-- varchar(30), pdname ,-- varchar(60), c_bpartner_id ,-- numeric(10,0), bpvalue ,-- varchar(30), bpname -- varchar(60), )VALUES( p_ad_pinstance_id, v_nextno, cur_1.ad_client_id, cur_1.ad_org_id, 'Y',SYSDATE,0,SYSDATE,0, cur_1.m_product_id, cur_1.pdValue, cur_1.pdName, cur_1.bpartner_id, cur_1.bpvalue, cur_1.bpname ); END LOOP; RETURN 0; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION adempiere.t_rj_productbp(numeric) OWNER TO adempiere; --Albert :: Skype: Adempiere/Compiere 四楼谢谢Albertachen的详细补充! JasperReports和iReport的优势是使报表设计的灵活、快捷、美观。还可以很方便地生成各种图表。 StoredProcedure看起来很强大,我将来会学习如何使用的。 --Peanut 2010-11-09销售数据整理模板今天与市场部的职员举行了一次会议,将客户信息、销售订单需要增加或变更的字段、字段值的选项都确定下来了。 这是数据整理模板(电子表格下载)。 以后会陆续增加采购、仓库等模块的模板。 讨论栏2010-11-11JasperReports报表今天主要调试JasperReports和iReport。
友情提醒:ADempiere新近版本已经集成了JasperReports功能,在Adempiere的安装目录下以jasper可以搜索到两个jar包。所以安装了ADempiere了用户就不必另外安装JasperReports了。 iReport安装方法以iReport-3.7.6和Linux操作系统为例
$ cd /opt/iReport-3.7.6/bin $ sh ireport 在ADempiere中应用JasperReports
后续测试
完成测试后就会用于销售订单的报表定制。 JasperReports相关链接
讨论栏2010-11-13销售订单下拉表这两天对销售订单、客户信息的定制进行了梳理。
去除重复项,共需下拉选项表18个。 起初想到的办法是为每个下拉选项表建一个表格,这样要建18个表格,比较繁琐。后来发现可以利用Reference的List,这样就简单多了。 从这个角度来看,之前增加的业务类型(Business Type)也可以通过Reference来设定,不需要创建数据表C_Business_Type了。 Sales Order当中的Invoice Rule就是这样处理的: DB Table: invoicerule character(1) NOT NULL Referece: Name= C_Order InvoiceRule Validation Type=List Validation AD Table: Name = InvoiceRule Reference = List Reference Key =C_Order InvoiceRule
关于Boolean数据类型我有个疑问,ADempiere数据表为什么不用Boolean数据类型,而是用character(1)? 例如C_Order数据表当中的字段isactive: isactive character(1) NOT NULL DEFAULT 'Y'::bpchar 讨论栏2010-11-23实施栏讨论栏一楼我知道::你已經卡住了!! 無法繼續往前實施!! ADempiere 是技術與管理結合於一身者的 ERP !! 從 SVN 下載 Source code 重新編譯 從客戶訂單 到 出貨 從廠商訂單 到 收貨 你完整跑一圈了嗎!! ADempiere PostGres 版本一直都有問題!! Convert_PostgreSQL 完全正確嗎 ? transaction 控管對嗎 ? -- Albertachen 二楼谢谢Albertachen大人的关心! 这段时间主要在忙几个事情。一个是ADempiere中文翻译校对,一个是Reference设置内容的批量导入,同时还有工作上的其他杂事。
--Peanut Blake 2010-11-24Reference设置内容的批量导入背景
探索方法四:维护一个基础数据库,再从这个数据库导入到ADempiere的PostgreSQL数据库。 之前在Windows操作系统下用MS Access进行过数据的导入导出。MS Access同一个数据库可以同时进行自建表格、连接至PostgreSQL(通过ODBC或JDBC)、连接至EXCEL电子表格文件,这样就可以非常方便地进行导入和更新了。 现在Linux操作系统下用OpenOffice.org Base,也试图用同样的方法进行,但是发现OOo Base只能三选一,要么自建表格,要么连接至PostgreSQL,要么连接Calc电子表格文件。 因此在OOo Base下进行电子表格-->PostgreSQL数据库的数据导入更为复杂一些。 步骤备注:由于本方案不佳,于是采用了Pentaho Data Integration + SQL语句 的综合方案,见“2010-11-27”的实施内容。 1. 在PostgreSQL新建base数据库。 同时新建ad_reference, ad_ref_list数据表。 注意:新建的数据表一定要设立主键,否则无法新增和编辑数据。
#aptitude install openoffice.org-sdbc-postgresql 3. 在OpenOffice.org Base新建adempiere-base数据库。 a).选择Connect to an existing database; b).选择postgresql; c).在Datasource URL栏输入: host=host=localhost port=5432 dbname=base d). 在user name栏输入:adempiere 这样就可以在OOo Base操作PostgreSQL数据库了。 4. 将电子表格中的数据导入到PostgreSQL。 a).打开电子表格,把数据整理好。 b).在OOo Calc中选择并复制要导入的数据。(即选择并复制单元格。) c).在OOo Base中选择要导入的表格,执行“粘贴”,这时会出现数据导入对话框,这样数据就可以顺利插入到PostgreSQL了。 讨论栏2010-11-27数据导入采用Pentaho方案
数据导入工具包
SQL语句操作风险
--更新Window Field名字。 UPDATE ad_field SET "name" = ii_column.name FROM ii_column WHERE ( ii_column.ad_field_id = ad_field.ad_field_id ) ; 我不留神误写成: UPDATE ad_field SET "name" = ii_column.name FROM ii_column WHERE ( ii_column.ad_tab_id = ad_field.ad_tab_id ) ; 执行完毕就悲剧了。幸好后来用了其它办法补救回来了。
讨论栏
二次开发-为什么不能自顶向下
直观编辑Window界面的工具
关于窗口布局的疑问
关于“从数据库创建表”功能
2010-11-29实施栏
菜单树Tree定制
讨论栏2010-11-30销售订单查询语句说明
OOo Base存在问题
SQL语句SELECT AD_Client_74.name AS "Client", AD_Org_82.name AS "Organization", C_Order.contractno AS "Contract No", C_Order.DocumentNo AS "Document No", ref49.name AS "Business Type", C_Order.POReference AS "Order Reference", C_Order.Description AS "Description", C_DocType_57.name AS "Target Document Type", C_Order.IsSelfService AS "Self-Service", C_Order.issueddate AS "Issued Date", C_Order.signedplace AS "Signed Place", C_Order.DateOrdered AS "Date Ordered", C_Order.DatePromised AS "Date Promised", C_BPartner_110.name AS "Business Partner ", C_BPartner_56.name AS "Invoice Partner", C_BPartner_Location_73.name AS "Partner Location", C_BPartner_Location_62.name AS "Invoice Location", AD_User_75.name AS "User/Contact", AD_User_61.name AS "Invoice Contact", ref50.name AS "Delivery Rule", ref43.name AS "Priority", M_Warehouse_81.name AS "Warehouse", C_Order.IsDropShip AS "Drop Shipment", C_BPartner_111.name AS "Drop Shipment Partner", C_BPartner_Location_66.name AS "Drop Shipment Location", AD_User_60.name AS "Drop Shipment Contact", M_Shipper_80.name AS "Shipper", ref42.name AS "Delivery Via", ref51.name AS "Freight Cost Rule", M_FreightCategory_77.name AS "Freight Category", C_Order.FreightAmt AS "Freight Amount", ref37.name AS "Packaging Provide", ref36.name AS "Packaging Recycle", ref54.name AS "Packing Standard", ref38.name AS "Fumigation", ref32.name AS "Mode of Shipment", ref33.name AS "Place of Delivery", C_Order.portofdestination AS "Port of Destination", C_Order.portofshipment AS "Port of Shipment", ref48.name AS "Time of Delivery Start Type", ref47.name AS "Time of Delivery Day Type", C_Order.timeofdelivery AS "Time of Delivery", ref41.name AS "Invoice Rule", M_PriceList_84.name AS "Price List", C_Currency_78.name AS "Currency", C_ConversionType_83.name AS "Currency Type", AD_User_58.name AS "Sales Representative", C_Order.IsDiscountPrinted AS "Discount Printed", C_Charge_59.name AS "Charge", C_Order.ChargeAmt AS "Charge amount", ref103.name AS "Payment Rule", C_PaymentTerm_76.name AS "Payment Term", C_Order.PromotionCode AS "Promotion Code", ref39.name AS "Invoice Type", C_Order.paymentremitted AS "Payment Remitted", ref45.name AS "Payment Method", C_Project_72.name AS "Project", C_Activity_71.name AS "Activity", C_Campaign_69.name AS "Campaign", AD_Org_63.name AS "Trx Organization", C_ElementValue_65.name AS "User List 1", C_ElementValue_64.name AS "User List 2", C_Order.TotalLines AS "Total Lines", C_Order.GrandTotal AS "Grand Total", ref46.name AS "Document Status", C_DocType_70.name AS "Document Type", ref105.name AS "Document Action", ref107.name AS "Posted", C_Order.OrderType AS "Order Type", C_OrderSource_79.name AS "Order Source", ref55.name AS "Acceptance Method", C_Order.advancepayment AS "Advance Payment ", ref40.name AS "Advance Payment Required", ref53.name AS "Contract Effective Way", C_Order.priceisvaliddays AS "This price is valid for .. days", ref31.name AS "Condition of Contact Invalidation", ref34.name AS "Arbitration", ref52.name AS "Installation Fee Payment Side", C_Order.installationfeedetail AS "Installation Fee Detail", ref44.name AS "Warranty Period", ref35.name AS "After-sale Service", C_Order.warrantystartdate AS "Warranty Start Date", C_Order.warrantyenddate AS "Warranty End Date", C_Order.AmountTendered AS "AmountTendered", C_Order.AmountRefunded AS "AmountRefunded", C_POS_68.name AS "POS Terminal" FROM C_Order LEFT OUTER JOIN AD_Client AS AD_Client_74 ON (AD_Client_74.AD_Client_ID=C_Order.AD_Client_ID) LEFT OUTER JOIN AD_Org AS AD_Org_82 ON (AD_Org_82.AD_Org_ID=C_Order.AD_Org_ID) LEFT OUTER JOIN ad_ref_list AS ref49 ON ((ref49.ad_reference_id=1001000) AND (C_Order.businesstype=ref49.value )) LEFT OUTER JOIN C_DocType AS C_DocType_57 ON (C_DocType_57.C_DocType_ID=C_Order.C_DocTypeTarget_ID) LEFT OUTER JOIN C_BPartner AS C_BPartner_110 ON (C_BPartner_110.C_BPartner_ID=C_Order.C_BPartner_ID) LEFT OUTER JOIN C_BPartner AS C_BPartner_56 ON (C_BPartner_56.C_BPartner_ID=C_Order.Bill_BPartner_ID) LEFT OUTER JOIN C_BPartner_Location AS C_BPartner_Location_73 ON (C_BPartner_Location_73.C_BPartner_Location_ID=C_Order.C_BPartner_Location_ID) LEFT OUTER JOIN C_BPartner_Location AS C_BPartner_Location_62 ON (C_BPartner_Location_62.C_BPartner_Location_ID=C_Order.Bill_Location_ID) LEFT OUTER JOIN AD_User AS AD_User_75 ON (AD_User_75.AD_User_ID=C_Order.AD_User_ID) LEFT OUTER JOIN AD_User AS AD_User_61 ON (AD_User_61.AD_User_ID=C_Order.Bill_User_ID) LEFT OUTER JOIN ad_ref_list AS ref50 ON ((ref50.ad_reference_id=151) AND (C_Order.DeliveryRule=ref50.value )) LEFT OUTER JOIN ad_ref_list AS ref43 ON ((ref43.ad_reference_id=154) AND (C_Order.PriorityRule=ref43.value )) LEFT OUTER JOIN M_Warehouse AS M_Warehouse_81 ON (M_Warehouse_81.M_Warehouse_ID=C_Order.M_Warehouse_ID) LEFT OUTER JOIN C_BPartner AS C_BPartner_111 ON (C_BPartner_111.C_BPartner_ID=C_Order.DropShip_BPartner_ID) LEFT OUTER JOIN C_BPartner_Location AS C_BPartner_Location_66 ON (C_BPartner_Location_66.C_BPartner_Location_ID=C_Order.DropShip_Location_ID) LEFT OUTER JOIN AD_User AS AD_User_60 ON (AD_User_60.AD_User_ID=C_Order.DropShip_User_ID) LEFT OUTER JOIN M_Shipper AS M_Shipper_80 ON (M_Shipper_80.M_Shipper_ID=C_Order.M_Shipper_ID) LEFT OUTER JOIN ad_ref_list AS ref42 ON ((ref42.ad_reference_id=152) AND (C_Order.DeliveryViaRule=ref42.value )) LEFT OUTER JOIN ad_ref_list AS ref51 ON ((ref51.ad_reference_id=153) AND (C_Order.FreightCostRule=ref51.value )) LEFT OUTER JOIN M_FreightCategory AS M_FreightCategory_77 ON (M_FreightCategory_77.M_FreightCategory_ID=C_Order.M_FreightCategory_ID) LEFT OUTER JOIN ad_ref_list AS ref37 ON ((ref37.ad_reference_id=1001010) AND (C_Order.packagingprovide=ref37.value )) LEFT OUTER JOIN ad_ref_list AS ref36 ON ((ref36.ad_reference_id=1001011) AND (C_Order.packagingrecycle=ref36.value )) LEFT OUTER JOIN ad_ref_list AS ref54 ON ((ref54.ad_reference_id=1001001) AND (C_Order.packingstandard=ref54.value )) LEFT OUTER JOIN ad_ref_list AS ref38 ON ((ref38.ad_reference_id=319) AND (C_Order.fumigation=ref38.value )) LEFT OUTER JOIN ad_ref_list AS ref32 ON ((ref32.ad_reference_id=1001008) AND (C_Order.modeofshipment=ref32.value )) LEFT OUTER JOIN ad_ref_list AS ref33 ON ((ref33.ad_reference_id=1001009) AND (C_Order.placeofdelivery=ref33.value )) LEFT OUTER JOIN ad_ref_list AS ref48 ON ((ref48.ad_reference_id=1001002) AND (C_Order.timeofdeliverystarttype=ref48.value )) LEFT OUTER JOIN ad_ref_list AS ref47 ON ((ref47.ad_reference_id=1001003) AND (C_Order.timeofdeliverydaytype=ref47.value )) LEFT OUTER JOIN ad_ref_list AS ref41 ON ((ref41.ad_reference_id=150) AND (C_Order.InvoiceRule=ref41.value )) LEFT OUTER JOIN M_PriceList AS M_PriceList_84 ON (M_PriceList_84.M_PriceList_ID=C_Order.M_PriceList_ID) LEFT OUTER JOIN C_Currency AS C_Currency_78 ON (C_Currency_78.C_Currency_ID=C_Order.C_Currency_ID) LEFT OUTER JOIN C_ConversionType AS C_ConversionType_83 ON (C_ConversionType_83.C_ConversionType_ID=C_Order.C_ConversionType_ID) LEFT OUTER JOIN AD_User AS AD_User_58 ON (AD_User_58.AD_User_ID=C_Order.SalesRep_ID) LEFT OUTER JOIN C_Charge AS C_Charge_59 ON (C_Charge_59.C_Charge_ID=C_Order.C_Charge_ID) LEFT OUTER JOIN ad_ref_list AS ref103 ON ((ref103.ad_reference_id=195) AND (C_Order.PaymentRule=ref103.value )) LEFT OUTER JOIN C_PaymentTerm AS C_PaymentTerm_76 ON (C_PaymentTerm_76.C_PaymentTerm_ID=C_Order.C_PaymentTerm_ID) LEFT OUTER JOIN ad_ref_list AS ref39 ON ((ref39.ad_reference_id=1001015) AND (C_Order.invoicetype=ref39.value )) LEFT OUTER JOIN ad_ref_list AS ref45 ON ((ref45.ad_reference_id=1001007) AND (C_Order.paymentmethod=ref45.value )) LEFT OUTER JOIN C_Project AS C_Project_72 ON (C_Project_72.C_Project_ID=C_Order.C_Project_ID) LEFT OUTER JOIN C_Activity AS C_Activity_71 ON (C_Activity_71.C_Activity_ID=C_Order.C_Activity_ID) LEFT OUTER JOIN C_Campaign AS C_Campaign_69 ON (C_Campaign_69.C_Campaign_ID=C_Order.C_Campaign_ID) LEFT OUTER JOIN AD_Org AS AD_Org_63 ON (AD_Org_63.AD_Org_ID=C_Order.AD_OrgTrx_ID) LEFT OUTER JOIN C_ElementValue AS C_ElementValue_65 ON (C_ElementValue_65.C_ElementValue_ID=C_Order.User1_ID) LEFT OUTER JOIN C_ElementValue AS C_ElementValue_64 ON (C_ElementValue_64.C_ElementValue_ID=C_Order.User2_ID) LEFT OUTER JOIN ad_ref_list AS ref46 ON ((ref46.ad_reference_id=131) AND (C_Order.DocStatus=ref46.value )) LEFT OUTER JOIN C_DocType AS C_DocType_70 ON (C_DocType_70.C_DocType_ID=C_Order.C_DocType_ID) LEFT OUTER JOIN ad_ref_list AS ref105 ON ((ref105.ad_reference_id=135) AND (C_Order.DocAction=ref105.value )) LEFT OUTER JOIN ad_ref_list AS ref107 ON ((ref107.ad_reference_id=234) AND (C_Order.Posted=ref107.value )) LEFT OUTER JOIN C_OrderSource AS C_OrderSource_79 ON (C_OrderSource_79.C_OrderSource_ID=C_Order.C_OrderSource_ID) LEFT OUTER JOIN ad_ref_list AS ref55 ON ((ref55.ad_reference_id=1001006) AND (C_Order.acceptancemethod=ref55.value )) LEFT OUTER JOIN ad_ref_list AS ref40 ON ((ref40.ad_reference_id=319) AND (C_Order.advancepaymentrequired=ref40.value )) LEFT OUTER JOIN ad_ref_list AS ref53 ON ((ref53.ad_reference_id=1001004) AND (C_Order.contracteffectiveway=ref53.value )) LEFT OUTER JOIN ad_ref_list AS ref31 ON ((ref31.ad_reference_id=1001005) AND (C_Order.conditionofcontactinvalidation=ref31.value )) LEFT OUTER JOIN ad_ref_list AS ref34 ON ((ref34.ad_reference_id=1001014) AND (C_Order.arbitration=ref34.value )) LEFT OUTER JOIN ad_ref_list AS ref52 ON ((ref52.ad_reference_id=1001016) AND (C_Order.installationfeepaymentside=ref52.value )) LEFT OUTER JOIN ad_ref_list AS ref44 ON ((ref44.ad_reference_id=1001012) AND (C_Order.warrantyperiod=ref44.value )) LEFT OUTER JOIN ad_ref_list AS ref35 ON ((ref35.ad_reference_id=1001013) AND (C_Order.aftersaleservice=ref35.value )) LEFT OUTER JOIN C_POS AS C_POS_68 ON (C_POS_68.C_POS_ID=C_Order.C_POS_ID) ; 讨论栏
链接本系列链接相关链接 |