package kasa.manager;
import hibernateSwingApi.hibernate.HibernateManager;
import java.util.Date;
import kasa.pojos.Kasa;
import kasa.pojos.KasaBakiyeHareket;
import satis.pojos.Satis;
import satis.pojos.YapilanSatis;
import satisBilgi.pojos.OdemeBilgileri;
import banka.pojos.POSBilgileri;
import banka.pojos.POSHareketleri;
import cari.pojos.Musteri;
import cari.pojos.MusteriHareketleri;
public class KasaManager {
private static Kasa satisKasasi;
private static Kasa bankaKasasi;
private static OdemeBilgileri satisOdemeBilgisi;
private static MusteriHareketleri musteriHareketi;
private static POSHareketleri posHareketi;
private static YapilanSatis satisBilgi;
private static final String NAKIT = "NAKİT";
private static final String KREDI_KART = "KREDİ KART";
private static final String PARCALI_ODEME = "PARÇALI ÖDEME";
private static final String VERESIYE = "VERESİYE";
private static final String SATIS_KASA = "SATIŞ KASASI";
private static final String BANKA_KASA = "BANKA KASASI";
private static final String YATIRMA = "YATIRMA";
private static final String CEKME = "ÇEKME";
private static final String SATIS = "SATIŞ";
public static void addSatisHareket(YapilanSatis satis) {
satisBilgi = satis;
satisOdemeBilgisi = satis.getOdemeBilgisi();
String islemTipi = null;
String aciklama = null;
double borc = 0;
switch (satis.getOdemeTur()) {
case NAKIT:
islemTipi = "NAKİT SATIŞ";
aciklama = "-";
addMusteriHareket(satisBilgi, islemTipi, aciklama, borc,
satisOdemeBilgisi.getNakitTutar());
changeKasaBakiye(satisKasasi, satisOdemeBilgisi.getNakitTutar());
break;
case KREDI_KART:
islemTipi = "KREDİ KARTI İLE SATIŞ";
aciklama = "-";
addBankaHareket(satisOdemeBilgisi.getPos(), SATIS, "", "",
satisOdemeBilgisi.getKrediKartTutar(), satis.getTarih(),
satis);
break;
case PARCALI_ODEME:
islemTipi = "PARÇALI ÖDEME İLE SATIŞ";
aciklama = satisBilgi.getTutar() + " TL' den NAKİT : "
+ satisOdemeBilgisi.getNakitTutar() + "/ KREDİ KART : "
+ satisOdemeBilgisi.getKrediKartTutar();
addMusteriHareket(satisBilgi, islemTipi, aciklama, borc,
satisOdemeBilgisi.getNakitTutar());
addBankaHareket(satisOdemeBilgisi.getPos(), SATIS, "", "",
satisOdemeBilgisi.getKrediKartTutar(), satis.getTarih(),
satis);
changeKasaBakiye(satisKasasi, satisOdemeBilgisi.getNakitTutar());
break;
case VERESIYE:
islemTipi = "VERESİYE SATIŞ";
aciklama = satisBilgi.getTutar() + " TL' den NAKİT : "
+ satisOdemeBilgisi.getNakitTutar() + "/ KALAN BORC : "
+ satisOdemeBilgisi.getTaksitTutar();
borc = satisOdemeBilgisi.getTaksitTutar();
addMusteriHareket(satisBilgi, islemTipi, aciklama, borc,
satisOdemeBilgisi.getNakitTutar());
changeKasaBakiye(satisKasasi, satisOdemeBilgisi.getNakitTutar());
addMusteriBorc(satis, borc);
break;
default:
break;
}
}
private static void addMusteriHareket(YapilanSatis satis, String islemTipi,
String aciklama, double borc, double tutar) {
satisKasasi = (Kasa) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Kasa.class, "kasaAd", SATIS_KASA,
false);
musteriHareketi = new MusteriHareketleri();
musteriHareketi.setTarih(satis.getTarih());
musteriHareketi.setIslemTipi(islemTipi);
musteriHareketi.setAciklama(aciklama);
musteriHareketi.setMusteri(satis.getMusteri());
musteriHareketi.setOdemeTuru(NAKIT);
musteriHareketi.setBorc(borc);
musteriHareketi.setTutar(tutar);
musteriHareketi.setSatis(satis);
musteriHareketi.setKasa(satisKasasi);
HibernateManager.getInstance().save(musteriHareketi);
}
private static void addMusteriBorc(Satis satis, double borc) {
Musteri musteri = satis.getMusteri();
musteri.setMusteriBorc(musteri.getMusteriBorc() + borc);
HibernateManager.getInstance().update(musteri);
}
private static boolean changeKasaBakiye(Kasa kasa, double tutar) {
kasa.setBakiye(kasa.getBakiye() + tutar);
return HibernateManager.getInstance().update(kasa);
}
public static boolean addBankaHareket(POSBilgileri pos, String islemTuru,
String dekontNo, String aciklama, double tutar, Date tarih,
YapilanSatis satis) {
bankaKasasi = (Kasa) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Kasa.class, "kasaAd", BANKA_KASA,
false);
posHareketi = new POSHareketleri();
switch (islemTuru) {
case YATIRMA:
islemTuru = "PARA " + YATIRMA;
if (aciklama.equals(""))
aciklama = "PARA YATIRMA İŞLEMİ";
changePOSBakiye(pos, tutar);
changeKasaBakiye(bankaKasasi, tutar);
break;
case CEKME:
tutar = tutar * -1;
islemTuru = "PARA " + CEKME;
if (aciklama.equals(""))
aciklama = "PARA ÇEKME İŞLEMİ";
changePOSBakiye(pos, tutar * -1);
changeKasaBakiye(bankaKasasi, tutar * -1);
break;
case SATIS:
String odemeTuru = satisBilgi.getOdemeTur();
islemTuru = odemeTuru + " İLE SATIŞ";
aciklama = pos.getBankaAd() + " POS";
posHareketi.setOdemeTuru(KREDI_KART);
posHareketi.setSatis(satis);
changePOSTutar(pos, tutar);
changeKasaBakiye(bankaKasasi, tutar);
break;
default:
break;
}
posHareketi.setTarih(new Date());
posHareketi.setPos(pos);
posHareketi.setIslemTipi(islemTuru);
posHareketi.setAciklama(aciklama);
if (!dekontNo.equals(""))
posHareketi.setDekontNo(dekontNo);
posHareketi.setTutar(tutar);
posHareketi.setBorc(0);
posHareketi.setKasa(bankaKasasi);
boolean control = HibernateManager.getInstance().save(posHareketi);
if (control) {
return HibernateManager.getInstance().update(pos);
}
return control;
}
private static void changePOSBakiye(POSBilgileri pos, double tutar) {
pos.setBakiye(pos.getBakiye() + tutar);
HibernateManager.getInstance().update(pos);
}
private static void changePOSTutar(POSBilgileri pos, double tutar) {
pos.setPosTutar(pos.getPosTutar() + tutar);
HibernateManager.getInstance().update(pos);
}
public static boolean transfer(POSBilgileri cekilecekBanka,
POSBilgileri yatirilacakBanka, String dekontNo, String aciklama,
double tutar, double havaleMasrafi, Date tarih) {
bankaKasasi = (Kasa) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Kasa.class, "kasaAd", BANKA_KASA,
false);
posHareketi = new POSHareketleri();
String islemTipi = cekilecekBanka.toString() + "'DAN "
+ yatirilacakBanka.toString() + "'A TRANSFER";
posHareketi.setTarih(tarih);
posHareketi.setPos(cekilecekBanka);
posHareketi.setPosTransfer(yatirilacakBanka);
posHareketi.setIslemTipi(islemTipi);
if (!aciklama.equals(""))
posHareketi.setAciklama(aciklama);
if (!dekontNo.equals(""))
posHareketi.setDekontNo(dekontNo);
posHareketi.setTutar(tutar);
posHareketi.setBorc(0);
posHareketi.setKasa(bankaKasasi);
boolean control = HibernateManager.getInstance().save(posHareketi);
if (control) {
changePOSBakiye(cekilecekBanka, tutar * -1);
changePOSBakiye(cekilecekBanka, havaleMasrafi * -1);
changePOSBakiye(yatirilacakBanka, tutar);
changeKasaBakiye(bankaKasasi, havaleMasrafi * -1);
}
return control;
}
public static boolean addKasaHareket(Kasa kasaBilgisi, String islemTuru,
String odemeTur, String aciklama, double tutar, Date tarih) {
if (aciklama.equals(""))
aciklama = kasaBilgisi.getAdi() + " PARA " + islemTuru;
if (islemTuru.equals(CEKME))
tutar = tutar * -1;
KasaBakiyeHareket kasaHareketi = new KasaBakiyeHareket();
kasaHareketi.setIslemTipi(islemTuru);
kasaHareketi.setOdemeTuru(odemeTur);
kasaHareketi.setKasa(kasaBilgisi);
kasaHareketi.setTarih(tarih);
kasaHareketi.setTutar(tutar);
kasaHareketi.setAciklama(aciklama);
boolean control = HibernateManager.getInstance().save(kasaHareketi);
if (control) {
return changeKasaBakiye(kasaBilgisi, tutar);
}
return false;
}
public static void addIadeHareket(YapilanSatis satis, double tutar) {
satisBilgi = satis;
satisOdemeBilgisi = satis.getOdemeBilgisi();
String islemTipi = "ÜRÜN İADE";
String aciklama = "ÜRÜN PARA İADE";
addMusteriHareket(satis, islemTipi, aciklama, 0, tutar);
changeKasaBakiye(satisKasasi, tutar);
}
}