add importation folder (Dossier d'importation)

This commit is contained in:
bachir souldi
2022-06-08 11:08:36 +01:00
parent ab14eed8e9
commit d5522f1a34
9 changed files with 311 additions and 0 deletions

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &gt;= 50" />
<hilite color="warning" if="progress &gt; 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>

View File

@@ -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">

View File

@@ -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>