/**
* Copyright (C) 2013 Premium Minds.
*
* This file is part of billy portugal (PT Pack).
*
* billy portugal (PT Pack) is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* billy portugal (PT Pack) is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with billy portugal (PT Pack). If not, see <http://www.gnu.org/licenses/>.
*/
package com.premiumminds.billy.portugal;
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Date;
import org.joda.time.DateTime;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.premiumminds.billy.core.persistence.dao.DAO;
import com.premiumminds.billy.core.persistence.dao.TransactionWrapper;
import com.premiumminds.billy.core.services.UID;
import com.premiumminds.billy.core.services.entities.Tax;
import com.premiumminds.billy.portugal.persistence.dao.DAOPTAddress;
import com.premiumminds.billy.portugal.persistence.dao.DAOPTContact;
import com.premiumminds.billy.portugal.persistence.dao.DAOPTCustomer;
import com.premiumminds.billy.portugal.persistence.dao.DAOPTInvoice;
import com.premiumminds.billy.portugal.persistence.dao.DAOPTRegionContext;
import com.premiumminds.billy.portugal.persistence.dao.DAOPTTax;
import com.premiumminds.billy.portugal.persistence.entities.PTAddressEntity;
import com.premiumminds.billy.portugal.persistence.entities.PTContactEntity;
import com.premiumminds.billy.portugal.persistence.entities.PTCustomerEntity;
import com.premiumminds.billy.portugal.persistence.entities.PTRegionContextEntity;
import com.premiumminds.billy.portugal.persistence.entities.PTTaxEntity;
import com.premiumminds.billy.portugal.services.entities.PTAddress;
import com.premiumminds.billy.portugal.services.entities.PTAddress.Builder;
import com.premiumminds.billy.portugal.services.entities.PTContact;
import com.premiumminds.billy.portugal.services.entities.PTCustomer;
import com.premiumminds.billy.portugal.services.entities.PTRegionContext;
import com.premiumminds.billy.portugal.services.entities.PTTax;
import com.premiumminds.billy.portugal.services.entities.PTTax.PTVATCode;
public class PortugalBootstrap {
protected static final String CODE_PT = "PT";
protected static final String CODE_PT_AVEIRO = "PT-01";
protected static final String CODE_PT_BEJA = "PT-02";
protected static final String CODE_PT_BRAGA = "PT-03";
protected static final String CODE_PT_BRAGANCA = "PT-04";
protected static final String CODE_PT_CASTELO_BRANCO = "PT-05";
protected static final String CODE_PT_COIMBRA = "PT-06";
protected static final String CODE_PT_EVORA = "PT-07";
protected static final String CODE_PT_FARO = "PT-08";
protected static final String CODE_PT_GUARDA = "PT-09";
protected static final String CODE_PT_LEIRIA = "PT-10";
protected static final String CODE_PT_LISBOA = "PT-11";
protected static final String CODE_PT_PORTALEGRE = "PT-12";
protected static final String CODE_PT_PORTO = "PT-13";
protected static final String CODE_PT_SANTAREM = "PT-14";
protected static final String CODE_PT_SETUBAL = "PT-15";
protected static final String CODE_PT_VIANA = "PT-16";
protected static final String CODE_PT_VILA_REAL = "PT-17";
protected static final String CODE_PT_VISEU = "PT-18";
protected static final String CODE_PT_AZORES = "PT-20";
protected static final String CODE_PT_MADEIRA = "PT-30";
public static void main(String[] args) {
if (args.length > 0 && !args[0].isEmpty()) {
PortugalBootstrap.execute(args[0]);
} else {
PortugalBootstrap.execute(BillyPortugal.DEFAULT_PERSISTENCE_UNIT); // backward compatibility
}
}
private static void execute(String persistenceUnitId) {
// Load dependency injector
Injector injector = Guice.createInjector(
new PortugalDependencyModule(),
new PortugalPersistenceDependencyModule(persistenceUnitId));
injector.getInstance(PortugalDependencyModule.Initializer.class);
injector.getInstance(PortugalPersistenceDependencyModule.Initializer.class);
PortugalBootstrap.execute(injector);
}
public static void execute(final Injector dependencyInjector) {
DAO<?> dao = dependencyInjector.getInstance(DAOPTInvoice.class);
final Config configuration = new Config();
try {
new TransactionWrapper<Void>(dao) {
@SuppressWarnings("unused")
@Override
public Void runTransaction() throws Exception {
// Dao creation
DAOPTCustomer daoPTCustomer = dependencyInjector
.getInstance(DAOPTCustomer.class);
DAOPTRegionContext daoPTRegionContext = dependencyInjector
.getInstance(DAOPTRegionContext.class);
DAOPTTax daoPTTax = dependencyInjector
.getInstance(DAOPTTax.class);
DAOPTContact daoPTContact = dependencyInjector
.getInstance(DAOPTContact.class);
DAOPTAddress daoPTAddress = dependencyInjector
.getInstance(DAOPTAddress.class);
// Builders
PTCustomer.Builder customerBuilder = dependencyInjector
.getInstance(PTCustomer.Builder.class);
PTRegionContext.Builder contextBuilder = dependencyInjector
.getInstance(PTRegionContext.Builder.class);
PTTax.Builder taxBuilder = dependencyInjector
.getInstance(PTTax.Builder.class);
PTAddress.Builder addressBuilder = dependencyInjector
.getInstance(PTAddress.Builder.class);
PTContact.Builder contactBuilder = dependencyInjector
.getInstance(PTContact.Builder.class);
// Generic Address
final PTAddressEntity GENERIC_ADDRESS = this
.buildAddressEntity(daoPTAddress, addressBuilder,
null, null, null,
"Desconhecido", null,
"Desconhecido", "Desconhecido",
"Desconhecido",
Config.Key.Address.Generic.UUID);
// Generic contact
final PTContactEntity GENERIC_CONTACT = this
.buildContactEntity(daoPTContact, contactBuilder,
null, null, null,
null, null,
null,
Config.Key.Contact.Generic.UUID);
// Generic Customer
final PTCustomerEntity GENERIC_CUSTOMER = this
.buildCustomerEntity(daoPTCustomer,
customerBuilder, "Consumidor final",
"999999990", addressBuilder,
contactBuilder, false,
Config.Key.Customer.Generic.UUID);
// Portugal Contexts
final PTRegionContextEntity CONTEXT_PORTUGAL = this
.buildContextEntity(daoPTRegionContext,
contextBuilder, "Portugal",
"The Context for the country Portugal",
null, PortugalBootstrap.CODE_PT,
Config.Key.Context.Portugal.UUID);
final PTRegionContextEntity CONTEXT_CONTINENTAL_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Portugal Continental",
"The Context for mainland Portugal",
CONTEXT_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT,
Config.Key.Context.Portugal.Continental.UUID);
final PTRegionContextEntity CONTEXT_AVEIRO_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Aveiro",
"The Context for the Portuguese Aveiro region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_AVEIRO,
Config.Key.Context.Portugal.Continental.Aveiro.UUID);
final PTRegionContextEntity CONTEXT_BEJA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Beja",
"The Context for the Portuguese Beja region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_BEJA,
Config.Key.Context.Portugal.Continental.Beja.UUID);
final PTRegionContextEntity CONTEXT_BRAGA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Braga",
"The Context for the Portuguese Braga region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_BRAGA,
Config.Key.Context.Portugal.Continental.Braga.UUID);
final PTRegionContextEntity CONTEXT_BRAGANÇA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Bragança",
"The Context for the Portuguese Bragança region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_BRAGANCA,
Config.Key.Context.Portugal.Continental.Braganca.UUID);
final PTRegionContextEntity CONTEXT_CASTELO_BRANCO_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Castelo Branco",
"The Context for the Portuguese Castelo Branco region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_CASTELO_BRANCO,
Config.Key.Context.Portugal.Continental.CasteloBranco.UUID);
final PTRegionContextEntity CONTEXT_COIMBRA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Coimbra",
"The Context for the Portuguese Coimbra region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_COIMBRA,
Config.Key.Context.Portugal.Continental.Coimbra.UUID);
final PTRegionContextEntity CONTEXT_EVORA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Evora",
"The Context for the Portuguese Evora region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_EVORA,
Config.Key.Context.Portugal.Continental.Evora.UUID);
final PTRegionContextEntity CONTEXT_FARO_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Faro",
"The Context for the Portuguese Faro region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_FARO,
Config.Key.Context.Portugal.Continental.Faro.UUID);
final PTRegionContextEntity CONTEXT_GUARDA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Guarda",
"The Context for the Portuguese Guarda region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_GUARDA,
Config.Key.Context.Portugal.Continental.Guarda.UUID);
final PTRegionContextEntity CONTEXT_LEIRIA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Leiria",
"The Context for the Portuguese Leiria region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_LEIRIA,
Config.Key.Context.Portugal.Continental.Leiria.UUID);
final PTRegionContextEntity CONTEXT_LISBOA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Lisboa",
"The Context for the Portuguese Lisboa region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_LISBOA,
Config.Key.Context.Portugal.Continental.Lisboa.UUID);
final PTRegionContextEntity CONTEXT_PORTALEGRE_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Portalegre",
"The Context for the Portuguese Portalegre region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_PORTALEGRE,
Config.Key.Context.Portugal.Continental.Portalegre.UUID);
final PTRegionContextEntity CONTEXT_PORTO_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Porto",
"The Context for the Portuguese Porto region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_PORTO,
Config.Key.Context.Portugal.Continental.Porto.UUID);
final PTRegionContextEntity CONTEXT_SANTAREM_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Santarem",
"The Context for the Portuguese Santarem region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_SANTAREM,
Config.Key.Context.Portugal.Continental.Santarem.UUID);
final PTRegionContextEntity CONTEXT_SETUBAL_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Setubal",
"The Context for the Portuguese Setubal region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_SETUBAL,
Config.Key.Context.Portugal.Continental.Setubal.UUID);
final PTRegionContextEntity CONTEXT_VIANA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Viana do Castelo",
"The Context for the Portuguese Viana do Castelo region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_VIANA,
Config.Key.Context.Portugal.Continental.Viana.UUID);
final PTRegionContextEntity CONTEXT_VILA_REAL_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Vila Real",
"The Context for the Portuguese Vila Real region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_VILA_REAL,
Config.Key.Context.Portugal.Continental.VilaReal.UUID);
final PTRegionContextEntity CONTEXT_VISEU_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Viseu",
"The Context for the Portuguese Viseu region",
CONTEXT_CONTINENTAL_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_VISEU,
Config.Key.Context.Portugal.Continental.Viseu.UUID);
final PTRegionContextEntity CONTEXT_AZORES_PORTUGAL = this
.buildContextEntity(daoPTRegionContext,
contextBuilder, "Azores",
"The Context for the Portuguese Azores",
CONTEXT_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_AZORES,
Config.Key.Context.Portugal.Azores.UUID);
final PTRegionContextEntity CONTEXT_MADEIRA_PORTUGAL = this
.buildContextEntity(
daoPTRegionContext,
contextBuilder,
"Madeira Autonomous Region",
"The Context for the Portuguese Madeira island",
CONTEXT_PORTUGAL.getUID(),
PortugalBootstrap.CODE_PT_MADEIRA,
Config.Key.Context.Portugal.Madeira.UUID);
// Taxes
Date from = new DateTime(2013, 1, 1, 0, 0).toDateMidnight()
.toDateTime().toDate();
Date to = new DateTime(2014, 1, 1, 0, 0).toDateMidnight()
.toDateTime().toDate();
final PTTaxEntity VAT_NORMAL_CONTINENTAL_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.NORMAL,
CONTEXT_CONTINENTAL_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Normal Continente",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Continental.VAT.NORMAL_PERCENT,
Config.Key.Context.Portugal.Continental.VAT.NORMAL_UUID);
final PTTaxEntity VAT_INTERMEDIATE_CONTINENTAL_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.INTERMEDIATE,
CONTEXT_CONTINENTAL_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Intermedio Continente",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Continental.VAT.INTERMEDIATE_PERCENT,
Config.Key.Context.Portugal.Continental.VAT.INTERMEDIATE_UUID);
final PTTaxEntity VAT_REDUCED_CONTINENTAL_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.REDUCED,
CONTEXT_CONTINENTAL_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Reduzido Continente",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Continental.VAT.REDUCED_PERCENT,
Config.Key.Context.Portugal.Continental.VAT.REDUCED_UUID);
// Madeira
final PTTaxEntity VAT_NORMAL_MADEIRA_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.NORMAL,
CONTEXT_MADEIRA_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Normal Madeira",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Madeira.VAT.NORMAL_PERCENT,
Config.Key.Context.Portugal.Madeira.VAT.NORMAL_UUID);
final PTTaxEntity VAT_INTERMEDIATE_MADEIRA_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.INTERMEDIATE,
CONTEXT_MADEIRA_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Intermedio Madeira",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Madeira.VAT.INTERMEDIATE_PERCENT,
Config.Key.Context.Portugal.Madeira.VAT.INTERMEDIATE_UUID);
final PTTaxEntity VAT_REDUCED_MADEIRA_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.REDUCED,
CONTEXT_MADEIRA_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Reduzido Madeira",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Madeira.VAT.REDUCED_PERCENT,
Config.Key.Context.Portugal.Madeira.VAT.REDUCED_UUID);
final PTTaxEntity VAT_NORMAL_AZORES_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.NORMAL,
CONTEXT_AZORES_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Normal Açores",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Azores.VAT.NORMAL_PERCENT,
Config.Key.Context.Portugal.Azores.VAT.NORMAL_UUID);
// Azores
final PTTaxEntity VAT_INTERMEDIATE_AZORES_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.INTERMEDIATE,
CONTEXT_AZORES_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Intermedio Açores",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Azores.VAT.INTERMEDIATE_PERCENT,
Config.Key.Context.Portugal.Azores.VAT.INTERMEDIATE_UUID);
final PTTaxEntity VAT_REDUCED_AZORES_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.REDUCED,
CONTEXT_AZORES_PORTUGAL,
Currency.getInstance("EUR"),
"IVA Reduzido Açores",
"IVA",
Tax.TaxRateType.PERCENTAGE,
from,
to,
Config.Key.Context.Portugal.Azores.VAT.REDUCED_PERCENT,
Config.Key.Context.Portugal.Azores.VAT.REDUCED_UUID);
final PTTaxEntity TAX_EXEMPT_PORTUGAL = this
.buildTaxEntity(
daoPTTax,
taxBuilder,
PTVATCode.EXEMPT,
CONTEXT_PORTUGAL,
Currency.getInstance("EUR"),
"Isento de IVA",
"IVA",
Tax.TaxRateType.NONE,
from,
to,
Config.Key.Context.Portugal.TAX_EXEMPT_VALUE,
Config.Key.Context.Portugal.TAX_EXEMPT_UUID);
return null;
}
private PTAddressEntity buildAddressEntity(
DAOPTAddress daoPTAddress, Builder addressBuilder,
String number, String street, String building,
String city, String region, String isoCode,
String details, String postalCode, String key) {
addressBuilder.setCity(city).setDetails(details)
.setISOCountry(isoCode).setNumber(number)
.setRegion(region).setStreetName(street)
.setPostalCode(postalCode).setBuilding(building);
PTAddressEntity address = (PTAddressEntity) addressBuilder
.build();
address.setUID(configuration.getUID(key));
daoPTAddress.create(address);
return address;
}
private PTContactEntity buildContactEntity(
DAOPTContact daoPTContact,
PTContact.Builder contactBuilder, String name,
String telephone, String mobile, String email,
String fax, String website, String key) {
contactBuilder.clear();
contactBuilder.setName(name).setEmail(email)
.setMobile(mobile).setFax(fax)
.setTelephone(telephone).setWebsite(website);
final PTContactEntity contact = (PTContactEntity) contactBuilder
.build();
contact.setUID(configuration.getUID(key));
daoPTContact.create(contact);
return contact;
}
private PTTaxEntity buildTaxEntity(DAOPTTax daoPTTax,
PTTax.Builder taxBuilder, String taxCode,
PTRegionContextEntity context, Currency currency,
String description, String designation,
Tax.TaxRateType type, Date validFrom, Date validTo,
String valueKey, String key) {
BigDecimal amount = new BigDecimal(
configuration.get(valueKey));
taxBuilder.clear();
taxBuilder.setCode(taxCode).setContextUID(context.getUID())
.setCurrency(currency).setDescription(description)
.setDesignation(designation)
.setTaxRate(type, amount).setValidFrom(validFrom)
.setValidTo(validTo).setValue(amount);
final PTTaxEntity tax = (PTTaxEntity) taxBuilder.build();
tax.setUID(configuration.getUID(key));
daoPTTax.create(tax);
return tax;
}
private PTRegionContextEntity buildContextEntity(
DAOPTRegionContext daoPTRegionContext,
PTRegionContext.Builder contextBuilder, String name,
String description, UID parentUID, String regionCode,
String key) {
contextBuilder.clear();
contextBuilder.setName(name).setDescription(description)
.setRegionCode(regionCode)
.setParentContextUID(parentUID);
final PTRegionContextEntity context = (PTRegionContextEntity) contextBuilder
.build();
context.setUID(configuration.getUID(key));
daoPTRegionContext.create(context);
return context;
}
private PTCustomerEntity buildCustomerEntity(
DAOPTCustomer daoPTCustomer,
PTCustomer.Builder customerBuilder, String name,
String taxRegistrationID,
PTAddress.Builder addressBuilder,
PTContact.Builder contactBuilder,
boolean hasSelfAgreement, String key) {
customerBuilder.clear();
customerBuilder
.setName(name)
.addContact(contactBuilder)
.setMainContactUID(contactBuilder.build().getUID())
.setHasSelfBillingAgreement(hasSelfAgreement)
.setTaxRegistrationNumber(taxRegistrationID,
CODE_PT).setBillingAddress(addressBuilder)
.setShippingAddress(addressBuilder)
.addAddress(addressBuilder, true);
PTCustomerEntity customer = (PTCustomerEntity) customerBuilder
.build();
customer.setUID(configuration.getUID(key));
customer.setTaxRegistrationNumber(null);
daoPTCustomer.create(customer);
return customer;
}
}.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
}