feat(采购订单): 添加合同条目关联及税率绑定功能

新增采购订单条目与合同条目的关联字段,实现税率和税率锁定的UI绑定
优化采购订单同步逻辑,支持从U8系统获取更多字段信息
调整界面文本显示,修复部分字段绑定问题
This commit is contained in:
2025-10-12 12:49:18 +08:00
parent ddd9dad945
commit 86e18632aa
17 changed files with 170 additions and 58 deletions

View File

@@ -151,6 +151,7 @@ public class ContractWindowController
registerTabSkin(contractTab, t -> new ContractTabSkinSubContract(this));
tabs.remove(bidVendorTab);
Tab saleOrderTab = new Tab("销售订单");
payPlanTab.setText("收款计划");
tabs.add(saleOrderTab);
registerTabSkin(saleOrderTab, tab -> new ContractTabSkinSaleOrders(this, tab));
tabs.add(new Tab("票据"));
@@ -166,6 +167,7 @@ public class ContractWindowController
tabs.add(new Tab("发货单"));
tabs.add(new Tab("签收单"));
tabs.add(new Tab("付款单"));
payPlanTab.setText("付款计划");
}
registerTabSkin(itemTab, tab -> new ContractTabSkinItemsV2(this));

View File

@@ -5,6 +5,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.HashMap;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.SpringApp;
import com.ecep.contract.controller.contract.AbstContractTableTabSkin;
import com.ecep.contract.controller.contract.ContractWindowController;
@@ -132,7 +133,11 @@ public class ContractTabSkinItemsV2
taxPriceColumn.setCellFactory(TextFieldTableCell.forTableColumn(currencyStringConverter));
quantityColumn.setCellValueFactory(param -> param.getValue().getQuantity());
quantityColumn.setCellFactory(QuantityTableCell.forTableColumn(new NumberStringConverter(getLocale())));
if (getEntity().getPayWay() == ContractPayWay.PAY) {
quantityColumn.setCellFactory(QuantityTableCell.forTableColumn(new NumberStringConverter(getLocale())));
} else {
quantityColumn.setCellFactory(TextFieldTableCell.forTableColumn(new NumberStringConverter(getLocale())));
}
taxAmountColumn.setCellValueFactory(param -> param.getValue().getTaxAmount());
taxAmountColumn.setCellFactory(TextFieldTableCell.forTableColumn(currencyStringConverter));

View File

@@ -47,8 +47,12 @@ public class PurchaseOrderTabSkinBase
initializeEmployeeField(controller.verifierField, viewModel.getVerifier());
initializeEmployeeField(controller.closerField, viewModel.getCloser());
viewModel.getTaxRate();
viewModel.getTaxRateLocked();
// 税率和税率锁定绑定
controller.taxRateField.textProperty().bindBidirectional(viewModel.getTaxRate(),
new javafx.util.converter.NumberStringConverter(getLocale(), "#.##"));
controller.taxRateLockedField.selectedProperty().bindBidirectional(viewModel.getTaxRateLocked());
viewModel.getVendorCode().bindBidirectional(controller.vendorCodeField.textProperty());
controller.makeDateField.textProperty().bind(viewModel.getMakerDate().map(MyDateTimeUtils::format));
controller.verifierDateField.textProperty().bind(viewModel.getVerifierDate().map(MyDateTimeUtils::format));

View File

@@ -14,6 +14,7 @@ import com.ecep.contract.vm.PurchaseOrderViewModel;
import com.ecep.contract.vo.PurchaseOrderVo;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
@@ -49,6 +50,9 @@ public class PurchaseOrderWindowController
public TextField closerDateField;
public TextField closerField;
public Label versionLabel;
public TextField taxRateField;
public CheckBox taxRateLockedField;
public TextField vendorCodeField;
@Autowired
private PurchaseOrdersService service;

View File

@@ -23,6 +23,11 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel<PurchaseOrderI
* 关联的库存, Inventory
*/
private SimpleObjectProperty<Integer> inventory = new SimpleObjectProperty<>();
/**
* 关联的采购合同条目, ContractItem
*/
private SimpleObjectProperty<Integer> contractItem = new SimpleObjectProperty<>();
private SimpleIntegerProperty refId = new SimpleIntegerProperty();
private SimpleDoubleProperty quantity = new SimpleDoubleProperty();
private SimpleDoubleProperty price = new SimpleDoubleProperty();
@@ -36,6 +41,7 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel<PurchaseOrderI
super.updateFrom(v);
getOrder().set(v.getOrder());
getInventory().set(v.getInventoryId());
getContractItem().set(v.getContractItemId());
getRefId().set(v.getRefId());
getQuantity().set(v.getQuantity());
getPrice().set(v.getPrice());
@@ -57,6 +63,10 @@ public class PurchaseOrderItemViewModel extends IdentityViewModel<PurchaseOrderI
v.setInventoryId(inventory.get());
modified = true;
}
if (!Objects.equals(contractItem.get(), v.getContractItemId())) {
v.setContractItemId(contractItem.get());
modified = true;
}
if (!Objects.equals(refId.get(), v.getRefId())) {
v.setRefId(refId.get());
modified = true;