Compare commits
6 Commits
dev2
...
ICOP-Mappi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb9c4ff74a | ||
|
|
15ce055b13 | ||
|
|
985baf2a25 | ||
|
|
936c00cda4 | ||
|
|
55e9f4455c | ||
|
|
da686191fc |
@@ -0,0 +1,13 @@
|
|||||||
|
<?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="base" package="com.axelor.apps.base.db" />
|
||||||
|
|
||||||
|
<entity name="Address" lang="java">
|
||||||
|
|
||||||
|
<many-to-one name="state" ref="com.axelor.apps.crm.db.StateAdministration" title="State" />
|
||||||
|
|
||||||
|
</entity>
|
||||||
|
|
||||||
|
</domain-models>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<?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="crm" package="com.axelor.apps.crm.db"/>
|
||||||
|
|
||||||
|
<entity name="Facility" lang="java">
|
||||||
|
|
||||||
|
|
||||||
|
<string name="name" title="Name"/>
|
||||||
|
|
||||||
|
<one-to-many name="partnerList" title="Partners" ref="com.axelor.apps.base.db.Partner" mappedBy="facility"/>
|
||||||
|
<many-to-one name="facilityType" title="Facility Type" ref="com.axelor.apps.crm.db.FacilityType"/>
|
||||||
|
|
||||||
|
<string name="description" title="Description"/>
|
||||||
|
|
||||||
|
<track>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="description"/>
|
||||||
|
</track>
|
||||||
|
|
||||||
|
</entity>
|
||||||
|
|
||||||
|
</domain-models>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<?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="crm" package="com.axelor.apps.crm.db"/>
|
||||||
|
|
||||||
|
<entity name="FacilityType" lang="java">
|
||||||
|
|
||||||
|
<string name="facilityTypeId" title="Id"/>
|
||||||
|
<string name="name" title="Name"/>
|
||||||
|
|
||||||
|
<one-to-many name="facilityList" title="Facility Type" ref="com.axelor.apps.crm.db.Facility" mappedBy="facilityType"/>
|
||||||
|
<string name="description" title="Description"/>
|
||||||
|
|
||||||
|
<track>
|
||||||
|
<field name="facilityTypeId"/>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="description"/>
|
||||||
|
</track>
|
||||||
|
|
||||||
|
</entity>
|
||||||
|
|
||||||
|
</domain-models>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?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="base" package="com.axelor.apps.base.db"/>
|
||||||
|
|
||||||
|
<entity name="Partner" lang="java">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ICOP fields -->
|
||||||
|
<string name="accountNo" title="Account Number"/>
|
||||||
|
<integer name="speciality" title="Speciality" selection="crm.partner.speciality.selection" />
|
||||||
|
<integer name="function" title="Function" selection="crm.partner.function.selection" />
|
||||||
|
<integer name="structure" title="Structure" selection="crm.partner.structure.selection" />
|
||||||
|
<integer name="rating" title="Rating" selection="crm.partner.potentiality.selection" />
|
||||||
|
|
||||||
|
<many-to-one name="facility" title="Facility" ref="com.axelor.apps.crm.db.Facility"/>
|
||||||
|
<many-to-many name="stateAdministrationList" title="State Administration" ref="com.axelor.apps.crm.db.StateAdministration"/>
|
||||||
|
|
||||||
|
<track>
|
||||||
|
<field name="accountNo"/>
|
||||||
|
<field name="speciality"/>
|
||||||
|
<field name="function"/>
|
||||||
|
<field name="structure"/>
|
||||||
|
<field name="rating"/>
|
||||||
|
</track>
|
||||||
|
</entity>
|
||||||
|
|
||||||
|
</domain-models>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?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="crm" package="com.axelor.apps.crm.db"/>
|
||||||
|
|
||||||
|
<entity name="StateAdministration" lang="java">
|
||||||
|
|
||||||
|
<string name="name" title="Name" required="true"/>
|
||||||
|
<string name="typeSelect" title="Type" selection="state.administration.type.select" required="true"/>
|
||||||
|
|
||||||
|
<many-to-one name="parent" ref="com.axelor.apps.crm.db.StateAdministration"/>
|
||||||
|
|
||||||
|
<string name="fullName" namecolumn="true" title="Full name">
|
||||||
|
<![CDATA[
|
||||||
|
|
||||||
|
String fullName = "";
|
||||||
|
|
||||||
|
com.axelor.apps.crm.db.StateAdministration current = this;
|
||||||
|
|
||||||
|
while (current != null && current.getName() != null) {
|
||||||
|
|
||||||
|
if (current == current.getParent()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fullName.isEmpty()) {
|
||||||
|
fullName = current.getName();
|
||||||
|
} else {
|
||||||
|
fullName = current.getName() + " - " + fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
current = current.getParent();
|
||||||
|
}
|
||||||
|
|
||||||
|
return fullName;
|
||||||
|
|
||||||
|
]]>
|
||||||
|
</string>
|
||||||
|
|
||||||
|
</entity>
|
||||||
|
|
||||||
|
</domain-models>
|
||||||
@@ -143,4 +143,61 @@
|
|||||||
<option value="1">Some user groups</option>
|
<option value="1">Some user groups</option>
|
||||||
</selection>
|
</selection>
|
||||||
|
|
||||||
|
<selection name="state.administration.type.select">
|
||||||
|
<option value="0">Region</option>
|
||||||
|
<option value="1">Sub Region</option>
|
||||||
|
<option value="2">Wilaya</option>
|
||||||
|
<option value="3">Commune</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.function.selection">
|
||||||
|
<option value="1">doctor</option>
|
||||||
|
<option value="2">wholesaler</option>
|
||||||
|
<option value="3">pharmacy</option>
|
||||||
|
<option value="4">PCH/HOSPITAL</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.orientation.selection">
|
||||||
|
<option value="1">CHU</option>
|
||||||
|
<option value="2">EPH</option>
|
||||||
|
<option value="3">EHS</option>
|
||||||
|
<option value="4">polyclinique</option>
|
||||||
|
<option value="5">treatment room</option>
|
||||||
|
<option value="6">office</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.potentiality.selection">
|
||||||
|
<option value="1">A+</option>
|
||||||
|
<option value="2">B+</option>
|
||||||
|
<option value="3">C+</option>
|
||||||
|
<option value="4">D+</option>
|
||||||
|
<option value="5">E+</option>
|
||||||
|
<option value="6">A-</option>
|
||||||
|
<option value="7">B-</option>
|
||||||
|
<option value="8">C-</option>
|
||||||
|
<option value="9">D-</option>
|
||||||
|
<option value="10">E-</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.region.selection">
|
||||||
|
<option value="1">center</option>
|
||||||
|
<option value="2">east</option>
|
||||||
|
<option value="3">west</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.state.selection">
|
||||||
|
<option value="1">actif</option>
|
||||||
|
<option value="2">lapsed</option>
|
||||||
|
<option value="3">disbarred</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.structure.selection">
|
||||||
|
<option value="1">public</option>
|
||||||
|
<option value="2">private</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
|
<selection name="crm.partner.sub.speciality.selection">
|
||||||
|
<option value="1">allergist</option>
|
||||||
|
</selection>
|
||||||
|
|
||||||
</object-views>
|
</object-views>
|
||||||
@@ -93,7 +93,7 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackOn = {Exception.class})
|
@Transactional(rollbackOn = { Exception.class })
|
||||||
public Invoice createInvoice(
|
public Invoice createInvoice(
|
||||||
StockMove stockMove,
|
StockMove stockMove,
|
||||||
Integer operationSelect,
|
Integer operationSelect,
|
||||||
@@ -130,8 +130,7 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
if (StockMoveRepository.ORIGIN_SALE_ORDER.equals(stockMove.getOriginTypeSelect())) {
|
if (StockMoveRepository.ORIGIN_SALE_ORDER.equals(stockMove.getOriginTypeSelect())) {
|
||||||
invoice = createInvoiceFromSaleOrder(stockMove, saleOrderRepo.find(origin), qtyToInvoiceMap);
|
invoice = createInvoiceFromSaleOrder(stockMove, saleOrderRepo.find(origin), qtyToInvoiceMap);
|
||||||
} else if (StockMoveRepository.ORIGIN_PURCHASE_ORDER.equals(stockMove.getOriginTypeSelect())) {
|
} else if (StockMoveRepository.ORIGIN_PURCHASE_ORDER.equals(stockMove.getOriginTypeSelect())) {
|
||||||
invoice =
|
invoice = createInvoiceFromPurchaseOrder(
|
||||||
createInvoiceFromPurchaseOrder(
|
|
||||||
stockMove, purchaseOrderRepo.find(origin), qtyToInvoiceMap);
|
stockMove, purchaseOrderRepo.find(origin), qtyToInvoiceMap);
|
||||||
} else {
|
} else {
|
||||||
invoice = createInvoiceFromOrderlessStockMove(stockMove, qtyToInvoiceMap);
|
invoice = createInvoiceFromOrderlessStockMove(stockMove, qtyToInvoiceMap);
|
||||||
@@ -147,8 +146,7 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
for (StockMoveLine subLine : stockMoveLine.getSubLineList()) {
|
for (StockMoveLine subLine : stockMoveLine.getSubLineList()) {
|
||||||
BigDecimal qty = BigDecimal.ZERO;
|
BigDecimal qty = BigDecimal.ZERO;
|
||||||
if (stockMoveLine.getQty().compareTo(BigDecimal.ZERO) != 0) {
|
if (stockMoveLine.getQty().compareTo(BigDecimal.ZERO) != 0) {
|
||||||
qty =
|
qty = qtyToInvoiceItem
|
||||||
qtyToInvoiceItem
|
|
||||||
.multiply(subLine.getQty())
|
.multiply(subLine.getQty())
|
||||||
.divide(stockMoveLine.getQty(), 2, RoundingMode.HALF_EVEN);
|
.divide(stockMoveLine.getQty(), 2, RoundingMode.HALF_EVEN);
|
||||||
}
|
}
|
||||||
@@ -159,13 +157,13 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackOn = {Exception.class})
|
@Transactional(rollbackOn = { Exception.class })
|
||||||
public Invoice createInvoiceFromSaleOrder(
|
public Invoice createInvoiceFromSaleOrder(
|
||||||
StockMove stockMove, SaleOrder saleOrder, Map<Long, BigDecimal> qtyToInvoiceMap)
|
StockMove stockMove, SaleOrder saleOrder, Map<Long, BigDecimal> qtyToInvoiceMap)
|
||||||
throws AxelorException {
|
throws AxelorException {
|
||||||
|
|
||||||
InvoiceGenerator invoiceGenerator =
|
InvoiceGenerator invoiceGenerator = saleOrderInvoiceService.createInvoiceGenerator(saleOrder,
|
||||||
saleOrderInvoiceService.createInvoiceGenerator(saleOrder, stockMove.getIsReversion());
|
stockMove.getIsReversion());
|
||||||
|
|
||||||
Invoice invoice = invoiceGenerator.generate();
|
Invoice invoice = invoiceGenerator.generate();
|
||||||
|
|
||||||
@@ -210,13 +208,12 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackOn = {Exception.class})
|
@Transactional(rollbackOn = { Exception.class })
|
||||||
public Invoice createInvoiceFromPurchaseOrder(
|
public Invoice createInvoiceFromPurchaseOrder(
|
||||||
StockMove stockMove, PurchaseOrder purchaseOrder, Map<Long, BigDecimal> qtyToInvoiceMap)
|
StockMove stockMove, PurchaseOrder purchaseOrder, Map<Long, BigDecimal> qtyToInvoiceMap)
|
||||||
throws AxelorException {
|
throws AxelorException {
|
||||||
|
|
||||||
InvoiceGenerator invoiceGenerator =
|
InvoiceGenerator invoiceGenerator = purchaseOrderInvoiceService.createInvoiceGenerator(
|
||||||
purchaseOrderInvoiceService.createInvoiceGenerator(
|
|
||||||
purchaseOrder, stockMove.getIsReversion());
|
purchaseOrder, stockMove.getIsReversion());
|
||||||
|
|
||||||
Invoice invoice = invoiceGenerator.generate();
|
Invoice invoice = invoiceGenerator.generate();
|
||||||
@@ -249,7 +246,7 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackOn = {Exception.class})
|
@Transactional(rollbackOn = { Exception.class })
|
||||||
public Invoice createInvoiceFromOrderlessStockMove(
|
public Invoice createInvoiceFromOrderlessStockMove(
|
||||||
StockMove stockMove, Map<Long, BigDecimal> qtyToInvoiceMap) throws AxelorException {
|
StockMove stockMove, Map<Long, BigDecimal> qtyToInvoiceMap) throws AxelorException {
|
||||||
|
|
||||||
@@ -274,8 +271,7 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
InvoiceGenerator invoiceGenerator =
|
InvoiceGenerator invoiceGenerator = new InvoiceGeneratorSupplyChain(stockMove, invoiceOperationType) {
|
||||||
new InvoiceGeneratorSupplyChain(stockMove, invoiceOperationType) {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Invoice generate() throws AxelorException {
|
public Invoice generate() throws AxelorException {
|
||||||
@@ -340,12 +336,10 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
Long id = stockMoveLine.getId();
|
Long id = stockMoveLine.getId();
|
||||||
if (qtyToInvoiceMap != null) {
|
if (qtyToInvoiceMap != null) {
|
||||||
if (qtyToInvoiceMap.containsKey(id)) {
|
if (qtyToInvoiceMap.containsKey(id)) {
|
||||||
invoiceLineListCreated =
|
invoiceLineListCreated = this.createInvoiceLine(invoice, stockMoveLine, qtyToInvoiceMap.get(id));
|
||||||
this.createInvoiceLine(invoice, stockMoveLine, qtyToInvoiceMap.get(id));
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
invoiceLineListCreated =
|
invoiceLineListCreated = this.createInvoiceLine(
|
||||||
this.createInvoiceLine(
|
|
||||||
invoice,
|
invoice,
|
||||||
stockMoveLine,
|
stockMoveLine,
|
||||||
stockMoveLine.getRealQty().subtract(stockMoveLine.getQtyInvoiced()));
|
stockMoveLine.getRealQty().subtract(stockMoveLine.getQtyInvoiced()));
|
||||||
@@ -424,8 +418,7 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
stockMoveLine.getStockMove().getStockMoveSeq());
|
stockMoveLine.getStockMove().getStockMoveSeq());
|
||||||
}
|
}
|
||||||
|
|
||||||
InvoiceLineGenerator invoiceLineGenerator =
|
InvoiceLineGenerator invoiceLineGenerator = new InvoiceLineGeneratorSupplyChain(
|
||||||
new InvoiceLineGeneratorSupplyChain(
|
|
||||||
invoice,
|
invoice,
|
||||||
product,
|
product,
|
||||||
stockMoveLine.getProductName(),
|
stockMoveLine.getProductName(),
|
||||||
@@ -465,7 +458,8 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of stock move lines consolidated by parent line (sale or purchase order).
|
* Get a list of stock move lines consolidated by parent line (sale or purchase
|
||||||
|
* order).
|
||||||
*
|
*
|
||||||
* @param stockMoveLineList
|
* @param stockMoveLineList
|
||||||
* @return
|
* @return
|
||||||
@@ -496,7 +490,9 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
stockMoveLinePurchaseMap.put(stockMoveLine.getPurchaseOrderLine(), list);
|
stockMoveLinePurchaseMap.put(stockMoveLine.getPurchaseOrderLine(), list);
|
||||||
}
|
}
|
||||||
list.add(stockMoveLine);
|
list.add(stockMoveLine);
|
||||||
} else { // if the stock move line does not have a parent line (sale or purchase order line)
|
resultList.add(stockMoveLine);
|
||||||
|
} else { // if the stock move line does not have a parent line (sale or purchase order
|
||||||
|
// line)
|
||||||
resultList.add(stockMoveLine);
|
resultList.add(stockMoveLine);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -544,14 +540,12 @@ public class StockMoveInvoiceServiceImpl implements StockMoveInvoiceService {
|
|||||||
stockMove = Beans.get(StockMoveRepository.class).find(stockMove.getId());
|
stockMove = Beans.get(StockMoveRepository.class).find(stockMove.getId());
|
||||||
|
|
||||||
if (stockMove.getInvoiceSet() != null && !stockMove.getInvoiceSet().isEmpty()) {
|
if (stockMove.getInvoiceSet() != null && !stockMove.getInvoiceSet().isEmpty()) {
|
||||||
Double totalInvoicedQty =
|
Double totalInvoicedQty = stockMove
|
||||||
stockMove
|
|
||||||
.getStockMoveLineList()
|
.getStockMoveLineList()
|
||||||
.stream()
|
.stream()
|
||||||
.mapToDouble(sml -> Double.parseDouble(sml.getQtyInvoiced().toString()))
|
.mapToDouble(sml -> Double.parseDouble(sml.getQtyInvoiced().toString()))
|
||||||
.sum();
|
.sum();
|
||||||
Double totalRealQty =
|
Double totalRealQty = stockMove
|
||||||
stockMove
|
|
||||||
.getStockMoveLineList()
|
.getStockMoveLineList()
|
||||||
.stream()
|
.stream()
|
||||||
.mapToDouble(sml -> Double.parseDouble(sml.getRealQty().toString()))
|
.mapToDouble(sml -> Double.parseDouble(sml.getRealQty().toString()))
|
||||||
|
|||||||
Reference in New Issue
Block a user