18 package org.turro.financials.contract.logic;
20 import java.util.ArrayList;
21 import java.util.Date;
22 import java.util.List;
23 import org.turro.string.Strings;
24 import org.turro.elephant.util.Messages;
25 import org.turro.financials.db.FinancialsPU;
26 import org.turro.financials.entity.Contract;
27 import org.turro.financials.entity.ContractDefinition;
28 import org.turro.financials.entity.DocumentDefinition;
29 import org.turro.financials.entity.Tax;
30 import org.turro.financials.entity.TaxType;
31 import org.turro.i18n.I_;
32 import org.turro.jpa.Dao;
33 import org.turro.tags.Tags;
34 import org.turro.zkoss.input.CollectionListbox;
35 import org.zkoss.zk.ui.HtmlBasedComponent;
52 return I_.
get(
"Contract");
57 return entity.getFullDescription();
58 }
catch(Exception ex) {
64 entity.setContractDefinition(contractDefinition);
74 if(
entity.getContractDefinition() ==
null ||
entity.getContractor() ==
null) {
79 checkContractedTag(
entity.getContractor());
92 ArrayList<Double> taxes =
new ArrayList<Double>();
95 taxes.add(tax.getTax());
98 if(!taxes.isEmpty()) {
101 protected String convertToString(Double v) {
107 cl.setMold(
"select");
134 ArrayList<Double> taxes =
new ArrayList<Double>();
137 taxes.add(tax.getEquivalenceSurcharge());
140 if(!taxes.isEmpty()) {
143 protected String convertToString(Double v) {
149 cl.setMold(
"select");
156 ArrayList<Double> retentions =
new ArrayList<Double>();
159 retentions.add(tax.getTax());
162 if(!retentions.isEmpty()) {
165 protected String convertToString(Double v) {
171 cl.setMold(
"select");
197 private void checkContractedTag(String contractor) {
199 Date now =
new Date();
200 boolean active =
false;
201 for(
Contract ctc : (List<Contract>) dao.getResultList(
202 "select ctc from Contract as ctc where ctc.contractor = ?",
203 new Object[] { contractor })) {
210 Tags.addTag(
"/contact/" + contractor,
"contracted");
212 Tags.removeTag(
"/contact/" + contractor,
"contracted");
219 for(String contractor : (List<String>) dao.getResultList(
220 "select distinct ctc.contractor from Contract as ctc")) {
221 checkContractedTag(contractor);
226 private void checkTaxes() {
228 for(
Contract ctc : (List<Contract>) dao.getResultList(
229 "select ctc from Contract as ctc where ctc.notes like '%IVA:%' or ctc.notes like '%IRPF:%'")) {
234 private void killTaxes(Dao dao, Contract ctc) {
235 if(!Strings.isBlank(ctc.getNotes())) {
236 boolean done =
false;
237 String taxs = Strings.extract(ctc.getNotes(),
"IVA:([0-9\\,]+)");
238 if(!Strings.isBlank(taxs)) {
239 for(String tax : taxs.split(
"\\,")) {
240 double dtax = Double.valueOf(tax);
241 boolean exists =
false;
242 for(Tax t : ctc.getTaxes()) {
243 if(t.getTax() == dtax) {
250 t.setTaxType(TaxType.VAT);
253 ctc.getTaxes().add(t);
256 ctc.setNotes(ctc.getNotes().replaceAll(
"IVA:([0-9\\,]+)",
""));
259 String rets = Strings.extract(ctc.getNotes(),
"IRPF:([0-9\\,]+)");
260 if(!Strings.isBlank(rets)) {
261 for(String tax : rets.split(
"\\,")) {
262 double dtax = Double.valueOf(tax);
263 boolean exists =
false;
264 for(Tax t : ctc.getTaxes()) {
265 if(t.getTax() == dtax) {
272 t.setTaxType(TaxType.RETENTION);
275 ctc.getTaxes().add(t);
278 ctc.setNotes(ctc.getNotes().replaceAll(
"IRPF:([0-9\\,]+)",
""));
static Messages confirmProcess()
HtmlBasedComponent getReqCtrl()
void assignDefinition(ContractDefinition contractDefinition)
ContractWrapper(Contract contract)
void checkAllContractor()
HtmlBasedComponent getTaxCtrl()
HtmlBasedComponent getRetentionCtrl()
void generateRegisters(final DocumentDefinition docDef, final int year)
boolean isUseContractorCode()
static boolean isActive(Date now, Contract contract)
static String get(String msg)