|  | @@ -2,30 +2,32 @@ package nckd.wnq01.wnq.scm.plugin.form;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import kd.bos.bill.AbstractBillPlugIn;
 | 
	
		
			
				|  |  |  import kd.bos.dataentity.entity.DynamicObject;
 | 
	
		
			
				|  |  | +import kd.bos.dataentity.entity.DynamicObjectCollection;
 | 
	
		
			
				|  |  |  import kd.bos.dataentity.resource.ResManager;
 | 
	
		
			
				|  |  | +import kd.bos.dataentity.utils.StringUtils;
 | 
	
		
			
				|  |  |  import kd.bos.entity.datamodel.IDataModel;
 | 
	
		
			
				|  |  |  import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 | 
	
		
			
				|  |  |  import kd.bos.form.ShowType;
 | 
	
		
			
				|  |  |  import kd.bos.form.cardentry.CardEntry;
 | 
	
		
			
				|  |  |  import kd.bos.form.control.Control;
 | 
	
		
			
				|  |  | -import kd.bos.form.control.events.ClickListener;
 | 
	
		
			
				|  |  | -import kd.bos.form.control.events.RowClickEventListener;
 | 
	
		
			
				|  |  | +import kd.bos.form.control.EntryGrid;
 | 
	
		
			
				|  |  | +import kd.bos.form.control.Toolbar;
 | 
	
		
			
				|  |  | +import kd.bos.form.control.events.*;
 | 
	
		
			
				|  |  |  import kd.bos.form.events.ClosedCallBackEvent;
 | 
	
		
			
				|  |  | +import kd.bos.form.field.BasedataEdit;
 | 
	
		
			
				|  |  |  import kd.bos.form.field.events.BeforeF7SelectEvent;
 | 
	
		
			
				|  |  |  import kd.bos.form.field.events.BeforeF7SelectListener;
 | 
	
		
			
				|  |  | -import kd.fi.er.business.ext.enums.ErExtcaseEnum;
 | 
	
		
			
				|  |  | -import kd.fi.er.business.ext.helper.ErExtHelper;
 | 
	
		
			
				|  |  | -import kd.fi.er.business.utils.CalculateTripSumUtil;
 | 
	
		
			
				|  |  | -import kd.fi.er.business.utils.ErEntityTypeUtils;
 | 
	
		
			
				|  |  | +import kd.bos.list.ListShowParameter;
 | 
	
		
			
				|  |  | +import kd.bos.orm.query.QCP;
 | 
	
		
			
				|  |  | +import kd.bos.orm.query.QFilter;
 | 
	
		
			
				|  |  | +import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
	
		
			
				|  |  |  import kd.fi.er.common.ShowPageUtils;
 | 
	
		
			
				|  |  | -import kd.fi.er.formplugin.web.TripBaseBillEdit;
 | 
	
		
			
				|  |  |  import kd.fi.er.model.FormModel;
 | 
	
		
			
				|  |  |  import kd.sdk.plugin.Plugin;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import java.util.EventObject;
 | 
	
		
			
				|  |  | -import java.util.HashMap;
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  | -import java.util.Map;
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @Author: Boil
 | 
	
	
		
			
				|  | @@ -37,17 +39,105 @@ public class BatchPriceAdjBaseEditPlugin extends AbstractBillPlugIn implements P
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
 | 
	
		
			
				|  |  | +        String name = beforeF7SelectEvent.getProperty().getName();
 | 
	
		
			
				|  |  | +        EntryGrid putentry = this.getView().getControl("nckd_putentry");
 | 
	
		
			
				|  |  | +        int[] selectRows = putentry.getSelectRows();
 | 
	
		
			
				|  |  | +        DynamicObject entry = this.getView().getModel().getEntryRowEntity("nckd_putentry",selectRows[0]);
 | 
	
		
			
				|  |  | +        ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
 | 
	
		
			
				|  |  | +        List<QFilter> qFilters = new ArrayList<>();
 | 
	
		
			
				|  |  | +        switch (name){
 | 
	
		
			
				|  |  | +            case "nckd_xqys_d":
 | 
	
		
			
				|  |  | +                DynamicObject nckdQuyus = entry.getDynamicObject("nckd_quyus");
 | 
	
		
			
				|  |  | +                DynamicObjectCollection nckdXqys = entry.getDynamicObjectCollection("nckd_xqys");
 | 
	
		
			
				|  |  | +                if(null != nckdQuyus){
 | 
	
		
			
				|  |  | +                    qFilters.add(new QFilter("nckd_qy", QCP.equals, nckdQuyus.getPkValue()));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                if (!nckdXqys.isEmpty()){
 | 
	
		
			
				|  |  | +                    List<Object> fbasedataids = nckdXqys.stream().map(x -> x.getDynamicObject("fbasedataid").getPkValue()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                    qFilters.add(new QFilter("id",QCP.not_in,fbasedataids));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (!qFilters.isEmpty())
 | 
	
		
			
				|  |  | +                    formShowParameter.getListFilterParameter().setQFilters(qFilters);
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            case "nckd_customer":
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                DynamicObjectCollection nckdTjdetailentry = entry.getDynamicObjectCollection("nckd_tjdetailentry");
 | 
	
		
			
				|  |  | +                DynamicObject subentry = nckdTjdetailentry.get(beforeF7SelectEvent.getRow());
 | 
	
		
			
				|  |  | +                DynamicObject nckdXqysD = subentry.getDynamicObject("nckd_xqys_d");
 | 
	
		
			
				|  |  | +                DynamicObject fkNckdSaletypesD = subentry.getDynamicObject("fk_nckd_saletypes_d");
 | 
	
		
			
				|  |  | +                if(null != nckdXqysD){
 | 
	
		
			
				|  |  | +                    qFilters.add(new QFilter("nckd_xqy", QCP.equals, nckdXqysD.getPkValue()));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if(null != fkNckdSaletypesD){
 | 
	
		
			
				|  |  | +                    qFilters.add(new QFilter("nckd_xslb", QCP.equals, fkNckdSaletypesD.getPkValue()));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (!qFilters.isEmpty())
 | 
	
		
			
				|  |  | +                    formShowParameter.getListFilterParameter().setQFilters(qFilters);
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void registerListener(EventObject e) {
 | 
	
		
			
				|  |  |          super.registerListener(e);
 | 
	
		
			
				|  |  | -        this.addClickListeners(new String[]{"nckd_updatetripentry", "nckd_cardentryflexpanel12", "nckd_addtjlabel1", "nckd_addptentry"});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Control tripEntry = this.getControl("nckd_putentry");
 | 
	
		
			
				|  |  |          if (tripEntry instanceof CardEntry) {
 | 
	
		
			
				|  |  |              ((CardEntry)tripEntry).addRowClickListener(this);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        Toolbar toolbar = this.getView().getControl("nckd_advcontoolbarap1");
 | 
	
		
			
				|  |  | +        toolbar.addItemClickListener(this);
 | 
	
		
			
				|  |  | +        toolbar.addClickListener(this);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Toolbar toolbar2 = this.getView().getControl("nckd_advcontoolbarap2");
 | 
	
		
			
				|  |  | +        toolbar2.addItemClickListener(this);
 | 
	
		
			
				|  |  | +        toolbar2.addClickListener(this);
 | 
	
		
			
				|  |  | +        this.addClickListeners(new String[]{"nckd_alldai","nckd_allsan","nckd_updatetripentry", "nckd_cardentryflexpanel12", "nckd_addtjlabel1", "nckd_addptentry"});
 | 
	
		
			
				|  |  | +        this.addItemClickListeners("nckd_alldai","nckd_allsan");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void beforeItemClick(BeforeItemClickEvent evt) {
 | 
	
		
			
				|  |  | +        super.beforeItemClick(evt);
 | 
	
		
			
				|  |  | +        Control source = (Control)evt.getSource();
 | 
	
		
			
				|  |  | +        if (StringUtils.equals("nckd_alldai", evt.getItemKey())
 | 
	
		
			
				|  |  | +                || StringUtils.equals("nckd_allsan",  evt.getItemKey())
 | 
	
		
			
				|  |  | +                || StringUtils.equals("nckd_advconbaritemap2",  evt.getItemKey())
 | 
	
		
			
				|  |  | +                || StringUtils.equals("nckd_advconbaritemap3",  evt.getItemKey())
 | 
	
		
			
				|  |  | +                || StringUtils.equals("nckd_advconbaritemap",  evt.getItemKey())
 | 
	
		
			
				|  |  | +                || StringUtils.equals("nckd_advconbaritemap1",  evt.getItemKey())){
 | 
	
		
			
				|  |  | +            EntryGrid nckdPutentry = this.getView().getControl("nckd_putentry");
 | 
	
		
			
				|  |  | +            int[] selectRows = nckdPutentry.getSelectRows();
 | 
	
		
			
				|  |  | +            if (selectRows==null || selectRows.length<1){
 | 
	
		
			
				|  |  | +                this.getView().showErrorNotification("请先选择一个普调分录");
 | 
	
		
			
				|  |  | +                evt.setCancel(true);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void beforeClick(BeforeClickEvent evt) {
 | 
	
		
			
				|  |  | +        super.beforeClick(evt);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void itemClick(ItemClickEvent evt) {
 | 
	
		
			
				|  |  | +        super.itemClick(evt);
 | 
	
		
			
				|  |  | +        String key = evt.getItemKey();
 | 
	
		
			
				|  |  | +        switch (key) {
 | 
	
		
			
				|  |  | +            case "nckd_alldai":
 | 
	
		
			
				|  |  | +                allAddentry("袋装");
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            case "nckd_allsan":
 | 
	
		
			
				|  |  | +                allAddentry("散装");
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -68,6 +158,48 @@ public class BatchPriceAdjBaseEditPlugin extends AbstractBillPlugIn implements P
 | 
	
		
			
				|  |  |              case "nckd_addptentry":
 | 
	
		
			
				|  |  |                  this.openPtEntry(-1, true);
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  | +            case "nckd_alldai":
 | 
	
		
			
				|  |  | +                allAddentry("袋装");
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +            case "nckd_allsan":
 | 
	
		
			
				|  |  | +                allAddentry("散装");
 | 
	
		
			
				|  |  | +                break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void allAddentry(String materialType) {
 | 
	
		
			
				|  |  | +        DynamicObject[] materialArr = BusinessDataServiceHelper.load("bd_material", "id,masterid,name,nckd_decimalfield,nckd_decimalfield1", new QFilter[]{new QFilter("name", QCP.like, "%"+materialType+"%")});
 | 
	
		
			
				|  |  | +        if (materialArr.length>0){
 | 
	
		
			
				|  |  | +            EntryGrid nckdPutentry = this.getView().getControl("nckd_putentry");
 | 
	
		
			
				|  |  | +            int[] selectRows = nckdPutentry.getSelectRows();
 | 
	
		
			
				|  |  | +            DynamicObjectCollection entity=this.getModel().getEntryEntity("nckd_putentry");
 | 
	
		
			
				|  |  | +            if(selectRows!=null && selectRows.length>0){
 | 
	
		
			
				|  |  | +                DynamicObject entry = entity.get(selectRows[0]);
 | 
	
		
			
				|  |  | +                DynamicObjectCollection nckdTjdetailentry = entry.getDynamicObjectCollection("nckd_tjdetailentry");
 | 
	
		
			
				|  |  | +                for (DynamicObject material : materialArr) {
 | 
	
		
			
				|  |  | +                    DynamicObject subentry = nckdTjdetailentry.addNew();
 | 
	
		
			
				|  |  | +                    this.getView().getModel().beginInit();
 | 
	
		
			
				|  |  | +                    subentry.set("nckd_materialhang",material);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    subentry.set("nckd_cbj",material.getBigDecimal("nckd_decimalfield1"));
 | 
	
		
			
				|  |  | +                    BigDecimal nckdDecimalfield = null==material.getBigDecimal("nckd_decimalfield") ? BigDecimal.ZERO : material.getBigDecimal("nckd_decimalfield") ;
 | 
	
		
			
				|  |  | +                    BigDecimal tiaozjiage = null == entry.getBigDecimal("nckd_tiaozjiage") ? BigDecimal.ZERO : entry.getBigDecimal("nckd_tiaozjiage");
 | 
	
		
			
				|  |  | +                    String nckdTiaojiatype = entry.getString("nckd_tiaojiatype");
 | 
	
		
			
				|  |  | +                    BigDecimal newprice=null;
 | 
	
		
			
				|  |  | +                    if(StringUtils.equals("S",nckdTiaojiatype)){
 | 
	
		
			
				|  |  | +                        newprice=nckdDecimalfield.add(tiaozjiage);
 | 
	
		
			
				|  |  | +                    }else if (StringUtils.equals("X",nckdTiaojiatype)){
 | 
	
		
			
				|  |  | +                        newprice=nckdDecimalfield.subtract(tiaozjiage);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    subentry.set("nckd_tiaojiafudu",tiaozjiage);
 | 
	
		
			
				|  |  | +                    subentry.set("nckd_tiaojiatyped",nckdTiaojiatype);
 | 
	
		
			
				|  |  | +                    subentry.set("nckd_yuanprice",nckdDecimalfield);
 | 
	
		
			
				|  |  | +                    this.getView().getModel().endInit();;
 | 
	
		
			
				|  |  | +                    subentry.set("nckd_newprice",newprice);
 | 
	
		
			
				|  |  | +                    this.getView().updateView("nckd_tjdetailentry");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 |