feat(采购订单): 添加合同条目关联及税率绑定功能
新增采购订单条目与合同条目的关联字段,实现税率和税率锁定的UI绑定 优化采购订单同步逻辑,支持从U8系统获取更多字段信息 调整界面文本显示,修复部分字段绑定问题
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<TableColumn fx:id="taxAmountColumn" style="-fx-alignment: center-right;"
|
||||
prefWidth="130.0" text="含税小计"/>
|
||||
<TableColumn fx:id="refIdColumn" editable="false" prefWidth="75.0" text="RefId"/>
|
||||
<TableColumn fx:id="codeColumn" editable="false" prefWidth="75.0" text="Code"/>
|
||||
<TableColumn fx:id="codeColumn" editable="false" prefWidth="75.0" text="条目编号"/>
|
||||
<TableColumn fx:id="startDateColumn" prefWidth="130.0" text="起始日期"/>
|
||||
<TableColumn fx:id="endDateColumn" prefWidth="130.0" text="截止日期"/>
|
||||
<TableColumn fx:id="creatorColumn" prefWidth="75.0" text="创建人"/>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.CheckBox?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.ScrollPane?>
|
||||
<?import javafx.scene.control.Tab?>
|
||||
@@ -19,8 +20,7 @@
|
||||
<?import javafx.scene.paint.Color?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<BorderPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1"
|
||||
fx:controller="com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderWindowController">
|
||||
<BorderPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.ecep.contract.controller.vendor.purchase.order.PurchaseOrderWindowController">
|
||||
<center>
|
||||
<TabPane fx:id="tabPane" tabClosingPolicy="UNAVAILABLE" tabMaxWidth="100.0" tabMinWidth="40.0">
|
||||
<tabs>
|
||||
@@ -44,22 +44,25 @@
|
||||
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0" vgrow="NEVER" />
|
||||
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0" vgrow="NEVER" />
|
||||
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0" vgrow="NEVER" />
|
||||
<RowConstraints fillHeight="false" minHeight="30.0" prefHeight="30.0" vgrow="NEVER" />
|
||||
<RowConstraints fillHeight="false" maxHeight="1.7976931348623157E308" minHeight="30.0" prefHeight="80.0" vgrow="NEVER" />
|
||||
<RowConstraints fillHeight="false" maxHeight="1.7976931348623157E308" minHeight="30.0" prefHeight="42.0" vgrow="NEVER" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="订单号#" />
|
||||
<Label text="供应商代码" GridPane.columnIndex="2" GridPane.rowIndex="0" />
|
||||
<Label text="采购订单编号" GridPane.rowIndex="1" />
|
||||
<TextField fx:id="refIdField" GridPane.columnIndex="1" />
|
||||
<TextField fx:id="vendorCodeField" GridPane.columnIndex="3" GridPane.rowIndex="0" />
|
||||
<TextField fx:id="codeField" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||
<Label layoutX="20.0" layoutY="28.0" text="备注" GridPane.rowIndex="6" />
|
||||
<TextArea fx:id="descriptionField" GridPane.columnIndex="1" GridPane.columnSpan="3" GridPane.rowIndex="6" />
|
||||
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1" GridPane.columnSpan="3" GridPane.rowIndex="7">
|
||||
<Label layoutX="20.0" layoutY="28.0" text="备注" GridPane.rowIndex="7" />
|
||||
<TextArea fx:id="descriptionField" GridPane.columnIndex="1" GridPane.columnSpan="3" GridPane.rowIndex="7" />
|
||||
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1" GridPane.columnSpan="3" GridPane.rowIndex="8">
|
||||
<children>
|
||||
<Button fx:id="saveBtn" disable="true" mnemonicParsing="false" text="保存" />
|
||||
</children>
|
||||
</HBox>
|
||||
<Label fx:id="versionLabel" text="\@Version" GridPane.rowIndex="7" />
|
||||
<Label fx:id="versionLabel" text="\@Version" GridPane.rowIndex="8" />
|
||||
<Label text="制单人" GridPane.rowIndex="2" />
|
||||
<Label text="制单日期" GridPane.columnIndex="2" GridPane.rowIndex="2" />
|
||||
<Label text="审核人" GridPane.rowIndex="3" />
|
||||
@@ -76,8 +79,12 @@
|
||||
<TextField fx:id="modifierDateField" GridPane.columnIndex="3" GridPane.rowIndex="4" />
|
||||
<TextField fx:id="closerField" GridPane.columnIndex="1" GridPane.rowIndex="5" />
|
||||
<TextField fx:id="closerDateField" GridPane.columnIndex="3" GridPane.rowIndex="5" />
|
||||
<Label text="业务员" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||
<TextField fx:id="employeeField" GridPane.columnIndex="3" GridPane.rowIndex="1" />
|
||||
<Label text="业务员" GridPane.columnIndex="2" GridPane.rowIndex="1" />
|
||||
<TextField fx:id="employeeField" GridPane.columnIndex="3" GridPane.rowIndex="1" />
|
||||
<Label text="税率" GridPane.rowIndex="6" />
|
||||
<TextField fx:id="taxRateField" GridPane.columnIndex="1" GridPane.rowIndex="6" />
|
||||
<Label text="税率锁定" GridPane.columnIndex="2" GridPane.rowIndex="6" />
|
||||
<javafx.scene.control.CheckBox fx:id="taxRateLockedField" GridPane.columnIndex="3" GridPane.rowIndex="6" />
|
||||
</children>
|
||||
<VBox.margin>
|
||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
|
||||
Reference in New Issue
Block a user