add importation folder (Dossier d'importation)
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="purchase" package="com.axelor.apps.purchase.db"/>
|
||||
|
||||
<entity name="ImportationFolder" lang="java">
|
||||
<many-to-one name="contract" title="Contract" ref="com.axelor.apps.contract.db.Contract" />
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.axelor.apps.purchase.service;
|
||||
|
||||
import com.axelor.apps.purchase.db.ImportationFolder;
|
||||
import com.axelor.exception.AxelorException;
|
||||
|
||||
public interface ImportationFolderService {
|
||||
|
||||
public void draftImportationFolder(ImportationFolder importationFolder);
|
||||
|
||||
public void openImportationFolder(ImportationFolder importationFolder) throws AxelorException;
|
||||
|
||||
public void closeImportationFolder(ImportationFolder importationFolder);
|
||||
|
||||
public void cancelImportationFolder(ImportationFolder importationFolder);
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.axelor.apps.purchase.service;
|
||||
|
||||
import com.axelor.apps.base.service.administration.SequenceService;
|
||||
import com.axelor.apps.purchase.db.ImportationFolder;
|
||||
import com.axelor.apps.purchase.db.repo.ImportationFolderRepository;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
|
||||
public class ImportationFolderServiceImpl implements ImportationFolderService {
|
||||
|
||||
@Inject
|
||||
protected ImportationFolderRepository importationFolderRepository;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void draftImportationFolder(ImportationFolder importationFolder) {
|
||||
// TODO Auto-generated method stub
|
||||
// importationFolder.setStatusSelect(ImportationFolderRepository.STATUS_DRAFT);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void openImportationFolder(ImportationFolder importationFolder) throws AxelorException {
|
||||
// importationFolder.setStatusSelect(ImportationFolderRepository.STATUS_OPEND);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void closeImportationFolder(ImportationFolder importationFolder) {
|
||||
// importationFolder.setStatusSelect(ImportationFolderRepository.STATUS_CLOSED);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void cancelImportationFolder(ImportationFolder importationFolder) {
|
||||
// importationFolder.setStatusSelect(ImportationFolderRepository.STATUS_CANCELED);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.axelor.apps.purchase.web;
|
||||
|
||||
import com.axelor.apps.purchase.db.ImportationFolder;
|
||||
import com.axelor.apps.purchase.service.ImportationFolderService;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class ImportationFolderController {
|
||||
public void draftImportationFolder(ActionRequest request, ActionResponse response) {
|
||||
ImportationFolder importationFolder = request.getContext().asType(ImportationFolder.class);
|
||||
Beans.get(ImportationFolderService.class).draftImportationFolder(importationFolder);
|
||||
}
|
||||
|
||||
public void openImportationFolder(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
ImportationFolder importationFolder = request.getContext().asType(ImportationFolder.class);
|
||||
Beans.get(ImportationFolderService.class).openImportationFolder(importationFolder);
|
||||
}
|
||||
|
||||
public void closeImportationFolder(ActionRequest request, ActionResponse response) {
|
||||
ImportationFolder importationFolder = request.getContext().asType(ImportationFolder.class);
|
||||
Beans.get(ImportationFolderService.class).closeImportationFolder(importationFolder);
|
||||
}
|
||||
|
||||
public void cancelImportationFolder(ActionRequest request, ActionResponse response) {
|
||||
ImportationFolder importationFolder = request.getContext().asType(ImportationFolder.class);
|
||||
Beans.get(ImportationFolderService.class).cancelImportationFolder(importationFolder);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="purchase" package="com.axelor.apps.purchase.db"/>
|
||||
|
||||
<sequence name="importation.seq" initial="1" increment="1" padding="5" prefix="DOSIMP"/>
|
||||
|
||||
<entity name="ImportationFolder" sequential="true">
|
||||
<string name="name" sequence="importation.seq" title="Ref."/>
|
||||
<integer name="statusSelect" selection="purchase.importation.folder.status.select" readonly="true" default="1" />
|
||||
<one-to-many name="purchaseOrder" ref="com.axelor.apps.purchase.db.PurchaseOrder" title="Purchase order"/>
|
||||
<many-to-one name="forwardingPartner" ref="com.axelor.apps.base.db.Partner" required="true" title="Forwarding Partner"/>
|
||||
<many-to-one name="supplierPartner" ref="com.axelor.apps.base.db.Partner" required="true" title="Supplier"/>
|
||||
<string name="containerNumber" title="Number Container."/>
|
||||
<date name="boardingDate" title="Boarding Date"/>
|
||||
<date name="arrivalGoodiDate" title="Arrival goods"/>
|
||||
<date name="arrivalDocDate" title="Arrival Documents"/>
|
||||
<date name="invoiceDirectDebitDate" title="Invoice direct debit"/>
|
||||
<date name="folderReceptionDate" title="Folder reception date"/>
|
||||
<date name="arrivalNoticeDate" title="Arrival notice date"/>
|
||||
<date name="d_10_date" title="Date D10"/>
|
||||
<many-to-one name="currency" ref="com.axelor.apps.base.db.Currency" title="Currency"/>
|
||||
<integer name="valorisation" title="Valorisation Type" selection="importation.folder.valorisation.type.select" />
|
||||
<integer name="progress" title="Progress %" />
|
||||
<integer name="orderByState"/>
|
||||
|
||||
<decimal name="amount" precision="20" scale="4"/>
|
||||
<decimal name="taxAmount" precision="20" scale="4"/>
|
||||
<decimal name="totalAmount" precision="20" scale="2"/>
|
||||
|
||||
<!-- Notes -->
|
||||
<string name="notes" large="true" multiline="true" title="Description To Display"/>
|
||||
<string name="internalNote" large="true" multiline="true" title="Internal Note"/>
|
||||
|
||||
<!-- <many-to-one name="shipmentMode" ref="com.axelor.apps.stock.db.ShipmentMode"/> -->
|
||||
<!-- <many-to-one name="transportMode" ref="com.axelor.apps.stock.db.FreightCarrierMode" required="true" title="Transport Mode"/> -->
|
||||
|
||||
|
||||
<extra-code>
|
||||
<![CDATA[
|
||||
/** Static importation folder status select */
|
||||
public static final int STATUS_DRAFT = 1;
|
||||
public static final int STATUS_OPEND = 2;
|
||||
public static final int STATUS_CLOSED = 3;
|
||||
public static final int STATUS_CANCELED = 4;
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
|
||||
<!-- end sophal -->
|
||||
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@@ -65,6 +65,10 @@
|
||||
<many-to-one name="tradingName" ref="com.axelor.apps.base.db.TradingName"/>
|
||||
<many-to-one name="printingSettings" ref="com.axelor.apps.base.db.PrintingSettings"/>
|
||||
|
||||
<!-- importation folder -->
|
||||
<integer name="importationType" selection="importation.folder.type.select" title="Type d'importation" default="1" />
|
||||
<many-to-one name="importationFolder" ref="com.axelor.apps.purchase.db.ImportationFolder" title="Dossier d'importation" />
|
||||
|
||||
<unique-constraint columns="purchaseOrderSeq,company"/>
|
||||
|
||||
<extra-code>
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<form name="importation-folder-form" title="Dossier d'importation" model="com.axelor.apps.purchase.db.ImportationFolder">
|
||||
<panel name="mainPanel">
|
||||
<field name="statusSelect" widget="nav-select" readonly="true" default="1" colSpan="12" showTitle="false"/>
|
||||
<field name="importationFolderSeq" showTitle="false">
|
||||
<viewer depends="importationFolderSeq"><![CDATA[
|
||||
<h3>
|
||||
<span ng-show="record.importationFolderSeq" x-translate>Importation Folder</span>
|
||||
{{record.importationFolderSeq}}
|
||||
</h3>
|
||||
]]>
|
||||
</viewer>
|
||||
</field>
|
||||
<spacer colSpan="12" />
|
||||
<field name="containerNumber" title="N° Contenaire"/>
|
||||
<field name="forwardingPartner" form-view="partner-form" grid-view="partner-grid" title="Code transitaire"/>
|
||||
<field name="supplierPartner" form-view="partner-form" grid-view="partner-grid" title="Code fournisseur"/>
|
||||
<spacer colSpan="12" />
|
||||
<field name="boardingDate" title="Date embarquement"/>
|
||||
<field name="arrivalGoodiDate" title="Date arrivee marchandise"/>
|
||||
<field name="arrivalDocDate" title="Date arrivee document"/>
|
||||
<field name="invoiceDirectDebitDate" title="Date domiciliation facture"/>
|
||||
<field name="folderReceptionDate" title="Date reception dossier"/>
|
||||
<field name="arrivalNoticeDate" title="Date avis arrivee"/>
|
||||
<field name="d_10_date" title="Date d10" />
|
||||
<field name="valorisation" title="Type de valorisation"/>
|
||||
<field name="currency" title="Devise" />
|
||||
<field name="contract" title="Type de contrat" />
|
||||
|
||||
</panel>
|
||||
<panel-tabs name="mainPanelTab">
|
||||
<panel title="Description">
|
||||
<field name="notes" title="Notes" colSpan="12" widget="html" />
|
||||
</panel>
|
||||
<panel title="Shipping mode">
|
||||
<field name="shipmentMode" form-view="shipment-mode-form" grid-view="shipment-mode-grid" />
|
||||
<field name="freightCarrierMode" form-view="freight-carrier-mode-form" grid-view="freight-carrier-mode-grid" />
|
||||
</panel>
|
||||
</panel-tabs>
|
||||
<panel name="actionsPanel" sidebar="true">
|
||||
<button name="draftBtn" title="Draft" onClick="save,action-importation-folder-record-draft,save" />
|
||||
<button name="openedBtn" title="Open" onClick="save,action-importation-folder-record-open,save" />
|
||||
<button name="closeBtn" title="Close" onClick="save,action-importation-folder-record-close,save" />
|
||||
<button name="cancelBtn" title="Cancel" class="danger" css="btn-danger" icon="fa-times" onClick="save,action-importation-folder-record-cancel,save" />
|
||||
</panel>
|
||||
<panel name="intaxTotalPanel" sidebar="true">
|
||||
<separator/>
|
||||
<field name="purchaseOrder" showTitle="false" colSpan="12" css="sub-order">
|
||||
<viewer depends="purchaseOrder">
|
||||
<![CDATA[
|
||||
<dl class="dl-horizontal">
|
||||
<dt x-translate>Total W.T.</dt>
|
||||
<dd>{{record.exTaxTotal}} {{record.currency.symbol}}</dd>
|
||||
<dt x-translate>Total tax</dt>
|
||||
<dd>{{record.taxTotal}} {{record.currency.symbol}}</dd>
|
||||
<dt class="order-subtotal-total" x-translate>Total A.T.I.</dt>
|
||||
<dd class="order-subtotal-total">{{record.inTaxTotal}} {{record.currency.symbol}}</dd>
|
||||
<dt x-translate>Amount invoiced W.T.</dt>
|
||||
<dd>{{record.amountInvoiced}} {{record.currency.symbol}}</dd>
|
||||
</dl>
|
||||
]]>
|
||||
</viewer>
|
||||
</field>
|
||||
<field name="purchaseOrder.inTaxTotal" />
|
||||
<field name="purchaseOrder.currency.symbol" />
|
||||
</panel>
|
||||
<panel sidebar="true">
|
||||
<field name="createdOn"/>
|
||||
<field name="createdBy"/>
|
||||
<field name="updatedOn"/>
|
||||
<field name="updatedBy"/>
|
||||
</panel>
|
||||
<panel sidebar="true">
|
||||
</panel>
|
||||
<panel-mail>
|
||||
<mail-messages limit="4" />
|
||||
<mail-followers />
|
||||
</panel-mail>
|
||||
</form>
|
||||
|
||||
|
||||
<grid name="importation-folder-grid" title="Dossier d'importation" model="com.axelor.apps.purchase.db.ImportationFolder">
|
||||
<field name="importationFolderSeq"/>
|
||||
<field name="purchaseOrder"/>
|
||||
<field name="forwardingPartner"/>
|
||||
<field name="supplierPartner"/>
|
||||
<field name="containerNumber"/>
|
||||
<field name="boardingDate"/>
|
||||
<field name="arrivalGoodiDate"/>
|
||||
<field name="arrivalDocDate"/>
|
||||
<field name="invoiceDirectDebitDate"/>
|
||||
<field name="folderReceptionDate"/>
|
||||
<field name="arrivalNoticeDate"/>
|
||||
</grid>
|
||||
|
||||
<kanban name="importation-folder-kanban" title="Dossier d'importation" model="com.axelor.apps.purchase.db.ImportationFolder" columnBy="statusSelect" sequenceBy="orderByState" draggable="true" limit="10">
|
||||
<field name="importationFolderSeq"/>
|
||||
<field name="forwardingPartner"/>
|
||||
<field name="supplierPartner"/>
|
||||
<field name="containerNumber"/>
|
||||
<field name="boardingDate"/>
|
||||
<field name="progress"/>
|
||||
<field name="arrivalGoodiDate" />
|
||||
<hilite color="danger" if="progress == 0" />
|
||||
<hilite color="success" if="progress == 100" />
|
||||
<hilite color="info" if="progress >= 50" />
|
||||
<hilite color="warning" if="progress > 0" />
|
||||
<template><![CDATA[
|
||||
<h4>{{arrivalGoodiDate}}</h4>
|
||||
<div class="card-footer">
|
||||
<i class='fa fa-clock-o'></i> <span>{{arrivalGoodiDate|date:'yyyy-MM-dd HH:mm:ss'}}</span>
|
||||
</div>
|
||||
]]>
|
||||
</template>
|
||||
</kanban>
|
||||
|
||||
|
||||
<action-record name="action-importation-folder-record-draft" model="com.axelor.apps.purchase.db.ImportationFolder">
|
||||
<field name="statusSelect" expr="1"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-importation-folder-record-open" model="com.axelor.apps.purchase.db.ImportationFolder">
|
||||
<field name="statusSelect" expr="2"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-importation-folder-record-close" model="com.axelor.apps.purchase.db.ImportationFolder">
|
||||
<field name="statusSelect" expr="3"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-importation-folder-record-cancel" model="com.axelor.apps.purchase.db.ImportationFolder">
|
||||
<field name="statusSelect" expr="4"/>
|
||||
</action-record>
|
||||
|
||||
</object-views>
|
||||
@@ -3,7 +3,12 @@
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<!-- dossier d'inportation -->
|
||||
|
||||
<selection name="importation.folder.type.select">
|
||||
<option value="1">Local</option>
|
||||
<option value="2">Etranger</option>
|
||||
</selection>
|
||||
<!-- Nomenclature : * name : "interfaceName" + "fieldName" + ".select" -->
|
||||
|
||||
<selection name="purchase.purchase.order.status.select">
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="purchase" package="com.axelor.apps.purchase.db"/>
|
||||
|
||||
<entity name="ImportationFolder" lang="java">
|
||||
<many-to-one name="shipmentMode" ref="com.axelor.apps.stock.db.ShipmentMode"/>
|
||||
<many-to-one name="freightCarrierMode" ref="com.axelor.apps.stock.db.FreightCarrierMode"/>
|
||||
</entity>
|
||||
</domain-models>
|
||||
Reference in New Issue
Block a user