PRICING - Ocupação | Antecipação (fixes bug #5836)

Tempo: 03 horas

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@43707 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2015-05-05 19:10:27 +00:00
parent 4880a1cfff
commit 9dc27f02a0
1 changed files with 225 additions and 233 deletions

View File

@ -16,7 +16,6 @@ import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zul.Button;
import org.zkoss.zul.Intbox; import org.zkoss.zul.Intbox;
import org.zkoss.zul.Radio; import org.zkoss.zul.Radio;
@ -35,251 +34,244 @@ import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingOcupaAnt
@Scope("prototype") @Scope("prototype")
public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericForwardComposer { public class EditarPricingOcupaAntecipaAutomaticoController extends MyGenericForwardComposer {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private final int CANTDIASMAXDEFAULT = 365;
@Autowired
private PricingOcupaAntecipaService pricingOcupaAntecipaService;
private PricingOcupaAntecipa pricingOcupaAntecipa;
private MyListbox pricingOcupaAntecipaList;
private MyListbox parentPricingOcupaAntecipaList;
private Intbox ocupacioninicial;
private Intbox ocupacionfinal;
private Intbox cantdiasmin;
private Intbox cantdiasmax;
private Intbox cantasientosmin;
private Intbox cantasientosmax;
private MyTextboxDecimal porcentaje;
private MyTextboxDecimal importe;
private List<PricingOcupaAntecipa> lsPricingOcupaAntecipa;
private Radio rdPoltronas;
private Radio rdOcupacao;
private Boolean hasNoElements;
private Button btnAdicionarOcupaAntecipa;
private List<PricingOcupaAntecipa> argList; private final int CANTDIASMAXDEFAULT = 365;
private Pricing pricing;
@Autowired
private ConstraintPorcentagem ct; private PricingOcupaAntecipaService pricingOcupaAntecipaService;
private static Logger log = Logger.getLogger(EditarPricingOcupaAntecipaController.class); private PricingOcupaAntecipa pricingOcupaAntecipa;
private MyListbox pricingOcupaAntecipaList;
private MyListbox parentPricingOcupaAntecipaList;
@Override private Intbox ocupacioninicial;
public void doAfterCompose(Component comp) throws Exception { private Intbox ocupacionfinal;
super.doAfterCompose(comp); private Intbox cantdiasmin;
/* private MyTextboxDecimal porcentaje;
* Transformar a tabela (valores de exemplo) : private List<PricingOcupaAntecipa> lsPricingOcupaAntecipa;
* private Radio rdOcupacao;
* Qtd. Dias Qtd. Dias Ocup. Min. Ocup. Máx. Porcentagem private Boolean hasNoElements;
* Minimo Máximo
* private List<PricingOcupaAntecipa> argList;
* 12 * 0% 20% -30% private Pricing pricing;
* 12 * 21% 80% -15%
* 12 * 81% 90% -10% private ConstraintPorcentagem ct;
* 8 11 0% 80% -15% private static Logger log = Logger.getLogger(EditarPricingOcupaAntecipaController.class);
* 8 11 81% 90% -10%
* 4 7 0% 90% -10% @Override
* public void doAfterCompose(Component comp) throws Exception {
* Na forma: super.doAfterCompose(comp);
* /*
* 12 dias ----> 30% (ocupação de 0% -> 20%) * Transformar a tabela (valores de exemplo) :
* 08 dias ----> 15% (ocupação de 21% -> 80%) *
* 04 dias ----> 10% (ocupação de 81% -> 90%) * Qtd. Dias Qtd. Dias Ocup. Min. Ocup. Máx. Porcentagem Minimo Máximo
* *
*/ * 12 * 0% 20% -30% 12 * 21% 80% -15% 12 * 81% 90% -10% 8 11 0% 80% -15% 8 11 81% 90% -10% 4 7 0% 90% -10%
*
argList = (List<PricingOcupaAntecipa>) Executions.getCurrent().getArg().get("clasePricingOcupaAntecipaList"); * Na forma:
parentPricingOcupaAntecipaList = (MyListbox)Executions.getCurrent().getArg().get("pricingOcupaAntecipaList"); *
pricing = (Pricing)Executions.getCurrent().getArg().get("pricing"); * 12 dias ----> 30% (ocupação de 0% -> 20%) 08 dias ----> 15% (ocupação de 21% -> 80%) 04 dias ----> 10% (ocupação de 81% -> 90%)
pricingOcupaAntecipaList.setItemRenderer(new RenderPricingOcupaAntecipa()); */
lsPricingOcupaAntecipa = new ArrayList<PricingOcupaAntecipa>();
argList = (List<PricingOcupaAntecipa>) Executions.getCurrent().getArg().get("clasePricingOcupaAntecipaList");
try{ parentPricingOcupaAntecipaList = (MyListbox) Executions.getCurrent().getArg().get("pricingOcupaAntecipaList");
Collections.sort(argList, Collections.reverseOrder(new PricingOcupaAntecipaComparator())); pricing = (Pricing) Executions.getCurrent().getArg().get("pricing");
} catch (Exception e){ pricingOcupaAntecipaList.setItemRenderer(new RenderPricingOcupaAntecipa());
Messagebox.show(Labels.getLabel("editarPricingOcupaAntecipaAutomaticoController.MSG.FormatoDados"), lsPricingOcupaAntecipa = new ArrayList<PricingOcupaAntecipa>();
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION); try {
Collections.sort(argList, Collections.reverseOrder(new PricingOcupaAntecipaComparator()));
return; } catch (Exception e) {
} e.printStackTrace();
Messagebox.show(Labels.getLabel("editarPricingOcupaAntecipaAutomaticoController.MSG.FormatoDados"),
int diaMin = -1; Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
for (PricingOcupaAntecipa p : argList){
if (diaMin != p.getCantdiasmin()){ return;
}
int diaMin = -1;
for (PricingOcupaAntecipa p : argList) {
if (p.getCantdiasmin() != null) {
if (diaMin != p.getCantdiasmin()) {
lsPricingOcupaAntecipa.add(p); lsPricingOcupaAntecipa.add(p);
diaMin = p.getCantdiasmin(); diaMin = p.getCantdiasmin();
} }
}
// se TabelaMaior.size mod TabelaMenor.size = 0, então há possibilidade de transformar a maior na menor.
if ((lsPricingOcupaAntecipa.size() > 0) && (argList.size() % lsPricingOcupaAntecipa.size() == 0)){
for (int j = 0; j < lsPricingOcupaAntecipa.size(); j++){
lsPricingOcupaAntecipa.get(j).setOcupacionfinal(argList.get(j).getOcupacionfinal());
lsPricingOcupaAntecipa.get(j).setOcupacioninicial(argList.get(j).getOcupacioninicial());
lsPricingOcupaAntecipa.get(j).setCantasientosmax(argList.get(j).getCantasientosmax());
lsPricingOcupaAntecipa.get(j).setCantasientosmin(argList.get(j).getCantasientosmin());
}
pricingOcupaAntecipaList.setData(lsPricingOcupaAntecipa);
} else if (lsPricingOcupaAntecipa.size() > 0){
Messagebox.show(Labels.getLabel("editarPricingOcupaAntecipaAutomaticoController.MSG.FormatoDados"),
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
return;
}
}
private void apagarRegistros() throws BusinessException{
for (PricingOcupaAntecipa poa : argList){
if ((poa.getOcupacioninicial() != null && poa.getOcupacioninicial().doubleValue() > 0) || (poa.getCantasientosmin() != null && poa.getCantasientosmin().intValue() > 0)){
pricingOcupaAntecipaService.borrar(poa);
}
}
}
public void onClick$btnAdicionarOcupaAntecipa(Event ev) throws Exception {
List<PricingOcupaAntecipa> parentList = new ArrayList<PricingOcupaAntecipa>();
calculaCantDiasMax();
try {
apagarRegistros();
for (int i = 0; i < lsPricingOcupaAntecipa.size(); i++){
lsPricingOcupaAntecipa.get(i).setOcupacioninicial(new BigDecimal(0));
if (lsPricingOcupaAntecipa.get(i).getPricingocupaantecipaId() == null){
pricingOcupaAntecipaService.suscribir(lsPricingOcupaAntecipa.get(i));
} else {
pricingOcupaAntecipaService.actualizacion(lsPricingOcupaAntecipa.get(i));
}
parentList.add(lsPricingOcupaAntecipa.get(i));
for (int j=i+1; j < lsPricingOcupaAntecipa.size(); j++){
PricingOcupaAntecipa p = new PricingOcupaAntecipa();
p.setPricingocupaantecipaId(lsPricingOcupaAntecipa.get(j).getPricingocupaantecipaId());
p.setCantasientosmax(lsPricingOcupaAntecipa.get(j).getCantasientosmax());
p.setCantasientosmin(lsPricingOcupaAntecipa.get(j).getCantasientosmin());
p.setCantdiasmax(lsPricingOcupaAntecipa.get(i).getCantdiasmax());
p.setCantdiasmin(lsPricingOcupaAntecipa.get(i).getCantdiasmin());
p.setOcupacionfinal(lsPricingOcupaAntecipa.get(j).getOcupacionfinal());
p.setOcupacioninicial(lsPricingOcupaAntecipa.get(j).getOcupacioninicial());
p.setPorcentaje(lsPricingOcupaAntecipa.get(j).getPorcentaje());
p.setPricing(pricing);
pricingOcupaAntecipaService.suscribir(p);
parentList.add(p);
}
}
parentPricingOcupaAntecipaList.setData(parentList);
closeWindow();
} catch (Exception e) {
Messagebox.show(e.getLocalizedMessage(),
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
}
}
private class PricingOcupaAntecipaComparator implements Comparator<PricingOcupaAntecipa> {
public int compare(PricingOcupaAntecipa pricing, PricingOcupaAntecipa outroPricing) {
return pricing.getCantdiasmin().
compareTo(outroPricing.getCantdiasmin());
}
}
private void calculaCantDiasMax(){
Collections.sort(lsPricingOcupaAntecipa, Collections.reverseOrder(new PricingOcupaAntecipaComparator()));
PricingOcupaAntecipa poa;
int cantDiasMinAnterior = lsPricingOcupaAntecipa.get(0).getCantdiasmin();
for (int i = 0; i < lsPricingOcupaAntecipa.size(); i++){
poa = lsPricingOcupaAntecipa.get(i);
if (i == 0){
poa.setCantdiasmax(CANTDIASMAXDEFAULT);
} else {
poa.setCantdiasmax(cantDiasMinAnterior - 1);
cantDiasMinAnterior = poa.getCantdiasmin();
}
}
}
public void onClick$btnlancar(Event ev) throws Exception {
PricingOcupaAntecipa poa = new PricingOcupaAntecipa();
poa.setPricing(pricing);
poa.setCantdiasmin(cantdiasmin.getValue());
poa.setPorcentaje(porcentaje.getValueDecimal());
if (rdOcupacao.isChecked()){
poa.setOcupacioninicial(new BigDecimal(ocupacioninicial.getValue()));
poa.setOcupacionfinal(new BigDecimal(ocupacionfinal.getValue()));
} else { } else {
poa.setCantasientosmin(ocupacioninicial.getValue()); lsPricingOcupaAntecipa.add(p);
poa.setCantasientosmax(ocupacionfinal.getValue());
} }
}
lsPricingOcupaAntecipa.add(poa);
// se TabelaMaior.size mod TabelaMenor.size = 0, então há possibilidade de transformar a maior na menor.
if ((lsPricingOcupaAntecipa.size() > 0) && (argList.size() % lsPricingOcupaAntecipa.size() == 0)) {
for (int j = 0; j < lsPricingOcupaAntecipa.size(); j++) {
lsPricingOcupaAntecipa.get(j).setOcupacionfinal(argList.get(j).getOcupacionfinal());
lsPricingOcupaAntecipa.get(j).setOcupacioninicial(argList.get(j).getOcupacioninicial());
lsPricingOcupaAntecipa.get(j).setCantasientosmax(argList.get(j).getCantasientosmax());
lsPricingOcupaAntecipa.get(j).setCantasientosmin(argList.get(j).getCantasientosmin());
}
pricingOcupaAntecipaList.setData(lsPricingOcupaAntecipa); pricingOcupaAntecipaList.setData(lsPricingOcupaAntecipa);
} else if (lsPricingOcupaAntecipa.size() > 0) {
Messagebox.show(Labels.getLabel("editarPricingOcupaAntecipaAutomaticoController.MSG.FormatoDados"),
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
return;
} }
}
public void onClick$btnRemoverOcupaAntecipa(Event ev) {
try { private void apagarRegistros() throws BusinessException {
PricingOcupaAntecipa pOcupacion = (PricingOcupaAntecipa) pricingOcupaAntecipaList.getSelected(); for (PricingOcupaAntecipa poa : argList) {
if (pOcupacion != null) { if ((poa.getOcupacioninicial() != null && poa.getOcupacioninicial().doubleValue() > 0) || (poa.getCantasientosmin() != null && poa.getCantasientosmin().intValue() > 0)) {
int resp = Messagebox.show(Labels.getLabel("editarPricingController.MSG.borrarPerguntaOcupacion"), pricingOcupaAntecipaService.borrar(poa);
Labels.getLabel("editarPricingController.windowOcupacion.title"), }
Messagebox.YES | Messagebox.NO, }
Messagebox.QUESTION); }
if (resp == Messagebox.YES) { public void onClick$btnAdicionarOcupaAntecipa(Event ev) throws Exception {
pricingOcupaAntecipa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); List<PricingOcupaAntecipa> parentList = new ArrayList<PricingOcupaAntecipa>();
pricingOcupaAntecipa.setFecmodif(Calendar.getInstance().getTime()); calculaCantDiasMax();
pricingOcupaAntecipa.setActivo(Pricing.INATIVO); try {
apagarRegistros();
pricingOcupaAntecipaList.removeItem(pricingOcupaAntecipa); for (int i = 0; i < lsPricingOcupaAntecipa.size(); i++) {
pricingOcupaAntecipaService.borrar(pricingOcupaAntecipa); lsPricingOcupaAntecipa.get(i).setOcupacioninicial(new BigDecimal(0));
closeWindow(); if (lsPricingOcupaAntecipa.get(i).getPricingocupaantecipaId() == null) {
} pricingOcupaAntecipaService.suscribir(lsPricingOcupaAntecipa.get(i));
} else { } else {
Messagebox.show(Labels.getLabel("editarPricingController.MSG.selectItem"), pricingOcupaAntecipaService.actualizacion(lsPricingOcupaAntecipa.get(i));
Labels.getLabel("editarPricingController.windowOcupacion.title"), }
Messagebox.OK, Messagebox.EXCLAMATION);
parentList.add(lsPricingOcupaAntecipa.get(i));
for (int j = i + 1; j < lsPricingOcupaAntecipa.size(); j++) {
PricingOcupaAntecipa p = new PricingOcupaAntecipa();
p.setPricingocupaantecipaId(lsPricingOcupaAntecipa.get(j).getPricingocupaantecipaId());
p.setCantasientosmax(lsPricingOcupaAntecipa.get(j).getCantasientosmax());
p.setCantasientosmin(lsPricingOcupaAntecipa.get(j).getCantasientosmin());
p.setCantdiasmax(lsPricingOcupaAntecipa.get(i).getCantdiasmax());
p.setCantdiasmin(lsPricingOcupaAntecipa.get(i).getCantdiasmin());
p.setOcupacionfinal(lsPricingOcupaAntecipa.get(j).getOcupacionfinal());
p.setOcupacioninicial(lsPricingOcupaAntecipa.get(j).getOcupacioninicial());
p.setPorcentaje(lsPricingOcupaAntecipa.get(j).getPorcentaje());
p.setPricing(pricing);
pricingOcupaAntecipaService.suscribir(p);
parentList.add(p);
} }
} catch (Exception ex) {
log.error(ex);
} }
parentPricingOcupaAntecipaList.setData(parentList);
closeWindow();
} catch (Exception e) {
Messagebox.show(e.getLocalizedMessage(),
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
} }
public PricingOcupaAntecipa getPricingOcupaAntecipa() {
return pricingOcupaAntecipa;
}
public void setPricingOcupacion(PricingOcupaAntecipa pricingOcupaAntecipa) {
this.pricingOcupaAntecipa = pricingOcupaAntecipa;
}
public MyListbox getPricingOcupacionList() {
return pricingOcupaAntecipaList;
}
public void setPricingOcupacionList(MyListbox pricingOcupacionList) {
this.pricingOcupaAntecipaList = pricingOcupacionList;
}
public ConstraintPorcentagem getCt() {
return ct;
}
public void setCt(ConstraintPorcentagem ct) {
this.ct = ct;
}
public Boolean getHasNoElements() {
return hasNoElements;
}
public void setHasNoElements(Boolean hasNoElements) {
this.hasNoElements = hasNoElements;
}
} }
private class PricingOcupaAntecipaComparator implements Comparator<PricingOcupaAntecipa> {
public int compare(PricingOcupaAntecipa pricing, PricingOcupaAntecipa outroPricing) {
if (pricing.getCantdiasmin() != null && outroPricing.getCantdiasmin() != null) {
return pricing.getCantdiasmin().compareTo(outroPricing.getCantdiasmin());
} else if (pricing.getOcupacioninicial() != null && outroPricing.getOcupacioninicial() != null) {
return pricing.getOcupacioninicial().compareTo(outroPricing.getOcupacioninicial());
}
return -1;
}
}
private void calculaCantDiasMax() {
Collections.sort(lsPricingOcupaAntecipa, Collections.reverseOrder(new PricingOcupaAntecipaComparator()));
PricingOcupaAntecipa poa;
int cantDiasMinAnterior = lsPricingOcupaAntecipa.get(0).getCantdiasmin();
for (int i = 0; i < lsPricingOcupaAntecipa.size(); i++) {
poa = lsPricingOcupaAntecipa.get(i);
if (i == 0) {
poa.setCantdiasmax(CANTDIASMAXDEFAULT);
} else {
poa.setCantdiasmax(cantDiasMinAnterior - 1);
cantDiasMinAnterior = poa.getCantdiasmin();
}
}
}
public void onClick$btnlancar(Event ev) throws Exception {
PricingOcupaAntecipa poa = new PricingOcupaAntecipa();
poa.setPricing(pricing);
poa.setCantdiasmin(cantdiasmin.getValue());
poa.setPorcentaje(porcentaje.getValueDecimal());
if (rdOcupacao.isChecked()) {
poa.setOcupacioninicial(new BigDecimal(ocupacioninicial.getValue()));
poa.setOcupacionfinal(new BigDecimal(ocupacionfinal.getValue()));
} else {
poa.setCantasientosmin(ocupacioninicial.getValue());
poa.setCantasientosmax(ocupacionfinal.getValue());
}
lsPricingOcupaAntecipa.add(poa);
pricingOcupaAntecipaList.setData(lsPricingOcupaAntecipa);
}
public void onClick$btnRemoverOcupaAntecipa(Event ev) {
try {
PricingOcupaAntecipa pOcupacion = (PricingOcupaAntecipa) pricingOcupaAntecipaList.getSelected();
if (pOcupacion != null) {
int resp = Messagebox.show(Labels.getLabel("editarPricingController.MSG.borrarPerguntaOcupacion"),
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.YES | Messagebox.NO,
Messagebox.QUESTION);
if (resp == Messagebox.YES) {
pricingOcupaAntecipa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
pricingOcupaAntecipa.setFecmodif(Calendar.getInstance().getTime());
pricingOcupaAntecipa.setActivo(Pricing.INATIVO);
pricingOcupaAntecipaList.removeItem(pricingOcupaAntecipa);
pricingOcupaAntecipaService.borrar(pricingOcupaAntecipa);
closeWindow();
}
} else {
Messagebox.show(Labels.getLabel("editarPricingController.MSG.selectItem"),
Labels.getLabel("editarPricingController.windowOcupacion.title"),
Messagebox.OK, Messagebox.EXCLAMATION);
}
} catch (Exception ex) {
log.error(ex);
}
}
public PricingOcupaAntecipa getPricingOcupaAntecipa() {
return pricingOcupaAntecipa;
}
public void setPricingOcupacion(PricingOcupaAntecipa pricingOcupaAntecipa) {
this.pricingOcupaAntecipa = pricingOcupaAntecipa;
}
public MyListbox getPricingOcupacionList() {
return pricingOcupaAntecipaList;
}
public void setPricingOcupacionList(MyListbox pricingOcupacionList) {
this.pricingOcupaAntecipaList = pricingOcupacionList;
}
public ConstraintPorcentagem getCt() {
return ct;
}
public void setCt(ConstraintPorcentagem ct) {
this.ct = ct;
}
public Boolean getHasNoElements() {
return hasNoElements;
}
public void setHasNoElements(Boolean hasNoElements) {
this.hasNoElements = hasNoElements;
}
}