|
@@ -11,7 +11,9 @@ import nc.impl.pubapp.pattern.data.bill.tool.BillConcurrentTool;
|
|
|
import nc.impl.pubapp.pattern.rule.IRule;
|
|
|
import nc.impl.so.m30.action.main.InsertSaleOrderAction;
|
|
|
import nc.impl.so.m30.action.main.UpdateSaleOrderAction;
|
|
|
+import nc.itf.uap.IUAPQueryBS;
|
|
|
import nc.itf.uap.pf.IPFBusiAction;
|
|
|
+import nc.jdbc.framework.processor.ColumnProcessor;
|
|
|
import nc.pubimpl.so.pfxx.AbstractSOPfxxPlugin;
|
|
|
import nc.pubimpl.so.pfxx.check.BillFreeStatusCheckRule;
|
|
|
import nc.pubimpl.so.pfxx.check.MnyTaxCheckRule;
|
|
@@ -28,6 +30,8 @@ import nc.vo.so.m30.entity.SaleOrderVO;
|
|
|
import nc.vo.wfengine.pub.WFTask;
|
|
|
|
|
|
public class M30PfxxPlugin extends AbstractSOPfxxPlugin {
|
|
|
+
|
|
|
+ IUAPQueryBS iuap= (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
|
|
|
|
|
|
@Override
|
|
|
public List<IRule<AggregatedValueObject>> getCheckers() {
|
|
@@ -93,6 +97,16 @@ public class M30PfxxPlugin extends AbstractSOPfxxPlugin {
|
|
|
SaleOrderHVO headvo=(SaleOrderHVO) vo.getParentVO();
|
|
|
|
|
|
String corigcurrencyid= headvo.getCorigcurrencyid();
|
|
|
+ String ccustomerid = headvo.getCcustomerid();
|
|
|
+ String tempcpaytermid = headvo.getCpaytermid();
|
|
|
+ try {
|
|
|
+ String cpaytermid = SqlexecuteQuery(ccustomerid,tempcpaytermid);
|
|
|
+ headvo.setCpaytermid(cpaytermid);
|
|
|
+ } catch (Exception e2) {
|
|
|
+
|
|
|
+ e2.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
CurrencyRateUtil currRateUtil = CurrencyRateUtil
|
|
|
.getInstanceByOrg(headvo.getPk_org());
|
|
|
try {
|
|
@@ -101,82 +115,88 @@ public class M30PfxxPlugin extends AbstractSOPfxxPlugin {
|
|
|
String ccurrencyid= bodyvo.getCcurrencyid();
|
|
|
|
|
|
if(corigcurrencyid.equals(ccurrencyid)){
|
|
|
+ UFDouble nnum = bodyvo.getNnum();
|
|
|
+ UFDouble nastnum = bodyvo.getNastnum();
|
|
|
+ UFDouble vchangerate = nastnum.div(nnum);
|
|
|
UFDouble nqtorigtaxprice = bodyvo.getNqtorigtaxprice();
|
|
|
UFDouble nqtorigprice = bodyvo.getNqtorigprice();
|
|
|
- UFDouble norigmny = bodyvo.getNorigmny();
|
|
|
UFDouble norigtaxmny = bodyvo.getNorigtaxmny();
|
|
|
- bodyvo.setNcaltaxmny(norigtaxmny);
|
|
|
- bodyvo.setNqttaxprice(nqtorigtaxprice);
|
|
|
- bodyvo.setNqtprice(nqtorigprice);
|
|
|
- bodyvo.setNqttaxnetprice(nqtorigtaxprice);
|
|
|
-
|
|
|
-
|
|
|
- bodyvo.setNqtnetprice(nqtorigprice);
|
|
|
-
|
|
|
- bodyvo.setNpiece(nqtorigprice);
|
|
|
-
|
|
|
- bodyvo.setNnetprice(nqtorigprice);
|
|
|
- bodyvo.setNmny(norigmny);
|
|
|
- bodyvo.setNtaxmny(norigtaxmny);
|
|
|
- bodyvo.setNqtorigtaxnetprc(nqtorigtaxprice);
|
|
|
- bodyvo.setNqtorignetprice(nqtorigprice);
|
|
|
-
|
|
|
-
|
|
|
- bodyvo.setNorignetprice(bodyvo.getNorigprice());
|
|
|
- bodyvo.setNorigtaxnetprice(bodyvo.getNorigtaxprice());
|
|
|
- bodyvo.setNtaxnetprice(bodyvo.getNorigtaxprice());
|
|
|
- bodyvo.setNtaxprice(bodyvo.getNorigtaxprice());
|
|
|
+ UFDouble norigtaxprice = vchangerate.multiply(nqtorigtaxprice);
|
|
|
+ UFDouble norigprice = vchangerate.multiply(nqtorigprice);
|
|
|
+ bodyvo.setNqtunitnum(nnum);
|
|
|
+ bodyvo.setVqtunitrate("1.00000000/1.00000000");
|
|
|
+ bodyvo.setNqtorigtaxprice(nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtorigprice(nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtorigtaxnetprc(nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtorignetprice(nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigtaxprice(norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigprice(norigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigtaxnetprice(norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorignetprice(norigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNcaltaxmny(nastnum.multiply(nqtorigprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigmny(nastnum.multiply(nqtorigprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigtaxmny(norigtaxmny.setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqttaxprice(nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtprice(nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqttaxnetprice(nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtnetprice(nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNtaxprice(norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNprice(norigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNtaxnetprice(norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNnetprice(norigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNmny(nastnum.multiply(nqtorigprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNtaxmny(nastnum.multiply(nqtorigtaxprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ bodyvo.setNtax(bodyvo.getNtaxmny().sub(bodyvo.getNmny()));
|
|
|
+
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- UFDouble foreignrate = currRateUtil.getRate(corigcurrencyid,
|
|
|
- ccurrencyid, headvo.getDbilldate());
|
|
|
- bodyvo.setNexchangerate(foreignrate);
|
|
|
-
|
|
|
- UFDouble norigprice=bodyvo.getNorigtaxprice();
|
|
|
- UFDouble foreignAmount= currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
- ccurrencyid, norigprice, foreignrate, headvo.getDbilldate());
|
|
|
-
|
|
|
-
|
|
|
- UFDouble ngprice=currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
- ccurrencyid, bodyvo.getNorigprice(), foreignrate, headvo.getDbilldate());
|
|
|
-
|
|
|
- bodyvo.setNprice(ngprice);
|
|
|
-
|
|
|
- bodyvo.setNqtprice(ngprice);
|
|
|
-
|
|
|
- bodyvo.setNqttaxprice(foreignAmount);
|
|
|
-
|
|
|
-
|
|
|
- UFDouble nmny=currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
- ccurrencyid, bodyvo.getNorigmny(), foreignrate, headvo.getDbilldate());
|
|
|
-
|
|
|
- bodyvo.setNmny(nmny);
|
|
|
-
|
|
|
- UFDouble ntaxmny=currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
- ccurrencyid, bodyvo.getNorigtaxmny(), foreignrate, headvo.getDbilldate());
|
|
|
-
|
|
|
- bodyvo.setNtaxmny(ntaxmny);
|
|
|
-
|
|
|
- bodyvo.setNcaltaxmny(ntaxmny);
|
|
|
- bodyvo.setNqtnetprice(ngprice);
|
|
|
- bodyvo.setNnetprice(ngprice);
|
|
|
-
|
|
|
- bodyvo.setNqttaxnetprice(foreignAmount);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- bodyvo.setNtax(ntaxmny.sub(nmny));
|
|
|
- bodyvo.setNqtorigtaxnetprc(foreignAmount);
|
|
|
- bodyvo.setNqtorignetprice(ngprice);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- bodyvo.setNorignetprice(bodyvo.getNorigprice());
|
|
|
- bodyvo.setNorigtaxnetprice(bodyvo.getNorigtaxprice());
|
|
|
- bodyvo.setNtaxnetprice(bodyvo.getNorigtaxprice());
|
|
|
- bodyvo.setNtaxprice(bodyvo.getNorigtaxprice());
|
|
|
+ else{
|
|
|
+ UFDouble foreignrate = currRateUtil.getRate(corigcurrencyid,
|
|
|
+ ccurrencyid, headvo.getDbilldate());
|
|
|
+ bodyvo.setNexchangerate(foreignrate);
|
|
|
+ UFDouble nnum = bodyvo.getNnum();
|
|
|
+ UFDouble nastnum = bodyvo.getNastnum();
|
|
|
+ UFDouble vchangerate = nastnum.div(nnum);
|
|
|
+ UFDouble nqtorigtaxprice = bodyvo.getNqtorigtaxprice();
|
|
|
+ UFDouble nqtorigprice = bodyvo.getNqtorigprice();
|
|
|
+ UFDouble norigtaxmny = bodyvo.getNorigtaxmny();
|
|
|
+ UFDouble norigtaxprice = vchangerate.multiply(nqtorigtaxprice);
|
|
|
+ UFDouble norigprice = vchangerate.multiply(nqtorigprice);
|
|
|
+ UFDouble nqtprice = currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
+ ccurrencyid, nqtorigprice, foreignrate, headvo.getDbilldate());
|
|
|
+ UFDouble nqttaxprice = currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
+ ccurrencyid, nqtorigtaxprice, foreignrate, headvo.getDbilldate());
|
|
|
+ UFDouble ntaxprice = currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
+ ccurrencyid, norigtaxprice, foreignrate, headvo.getDbilldate());
|
|
|
+ UFDouble nprice = currRateUtil.getAmountByOpp(corigcurrencyid,
|
|
|
+ ccurrencyid, norigprice, foreignrate, headvo.getDbilldate());
|
|
|
+ bodyvo.setNqtunitnum(nnum);
|
|
|
+ bodyvo.setVqtunitrate("1.00000000/1.00000000");
|
|
|
+ bodyvo.setNqtorigtaxprice(nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtorigprice(nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtorigtaxnetprc(nqtorigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtorignetprice(nqtorigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigtaxprice(norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigprice(norigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigtaxnetprice(norigtaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorignetprice(norigprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNcaltaxmny(nastnum.multiply(nqtprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigmny(nastnum.multiply(nqtorigprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNorigtaxmny(norigtaxmny.setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqttaxprice(nqttaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtprice(nqtprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqttaxnetprice(nqttaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNqtnetprice(nqtprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNtaxprice(ntaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNprice(nprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNtaxnetprice(ntaxprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNnetprice(nprice.setScale(4, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNmny(nastnum.multiply(nqtprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+ bodyvo.setNtaxmny(nastnum.multiply(nqttaxprice).setScale(2, UFDouble.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ bodyvo.setNtax(bodyvo.getNtaxmny().sub(bodyvo.getNmny()));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
} catch (BusinessException e1) {
|
|
@@ -237,5 +257,31 @@ public class M30PfxxPlugin extends AbstractSOPfxxPlugin {
|
|
|
}
|
|
|
return retvos[0];
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ *
|
|
|
+ * @param ccustomerid
|
|
|
+ * @param pk_org
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ private String SqlexecuteQuery(String ccustomerid,String pk_org) throws Exception {
|
|
|
+
|
|
|
+ String sql = "select pk_payterm from bd_custfinance where pk_customer = '"+ccustomerid+"' and pk_org = '"+pk_org+"' and nvl(dr,0)=0";
|
|
|
+
|
|
|
+ Object object;
|
|
|
+ try {
|
|
|
+ object = iuap.executeQuery(sql, new ColumnProcessor());
|
|
|
+ if (object==null) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ return object.toString();
|
|
|
+ } catch (BusinessException e) {
|
|
|
+
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|