配分リセットにおいて期間を指定すると実行できない
◆エラーメッセージ AllocationReset.doIt SELECT * FROM C_AllocationHdr ah WHERE EXISTS (SELECT * FROM C_AllocationLine al WHERE ah.C_AllocationHdr_ID=al.C_AllocationHdr_ID AND al.C_BPartner_ID=? AND TRIM(ah.DateAcct) >= ? AND TRIM(ah.DateAcct) <= ? AND al.C_CashLine_ID IS NULL) AND EXISTS (SELECT * FROM C_Period p INNER JOIN C_PeriodControl pc ON (p.C_Period_ID=pc.C_Period_ID AND pc.DocBaseType='CMA') WHERE ah.DateAcct BETWEEN p.StartDate AND p.EndDate)
◆原因 オープン期間を判定する部分のSQL文にバグがある(と思う) AND EXISTS (SELECT * FROM C_Period p INNER JOIN C_PeriodControl pc ON (p.C_Period_ID=pc.C_Period_ID AND pc.DocBaseType='CMA') WHERE ah.DateAcct BETWEEN p.StartDate AND p.EndDate) 「期間がオープンの場合、配分は削除されます」とのことなので、 この部分は期間オープンかどうかの確認部分と思われる だとすれば WHERE ah.DateAcct BETWEEN p.StartDate AND p.EndDate ではなく SELECT * FROM adempiere.C_Period p INNER JOIN adempiere.C_PeriodControl pc ON (p.C_Period_ID=pc.C_Period_ID AND pc.DocBaseType='CMA') WHERE (pc.periodstatus='O' AND p.isactive='Y') AND(?【期間FROM】>=p.startdate and p.startdate>= ?【期間TO】)or(?【期間FROM】>=p.enddate and p.endtdate>=?【期間TO】) /*AND(p.startdate BETWEEN ?【期間FROM】AND ?【期間TO】)OR(p.enddate BETWEEN ?【期間FROM】AND ?【期間TO】) */ かも?
配分リセットで期間を入力すると実行できません。 配分番号の指定の場合は削除できますが、 期間がオープンでなくても1件消えてしまいます。