package yonetici;
import hibernateSwingApi.hibernate.HibernateManager;
import java.util.Date;
import kasa.pojos.Kasa;
import kasa.pojos.KasaBakiyeHareket;
import satis.pojos.YapilanSatis;
import satisBilgi.pojos.OdemeBilgileri;
import servis.OndalikDeger;
import banka.pojos.Banka;
import banka.pojos.BankaHareketleri;
import cari.pojos.Cari;
import cari.pojos.CariHareketleri;
public class KasaYonetici {
private static Kasa satisKasasi;
private static OdemeBilgileri satisOdemeBilgisi;
private static CariHareketleri musteriHareketi;
private static BankaHareketleri posHareketi;
private static YapilanSatis satisBilgi;
private static Banka banka;
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 = "NAKİT KASASI";
private static final String YATIRMA = "PARA YATIRMA";
private static final String CEKME = "PARA ÇEKME";
private static final String TAKSIT_ODEME = "TAKSİT ÖDEMESİ";
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 = "NAKİT ÖDEME";
addMusteriHareket(satisBilgi, islemTipi, aciklama, borc,
satisOdemeBilgisi.getNakitTutar(), NAKIT);
changeKasaBakiye(satisKasasi, satisOdemeBilgisi.getNakitTutar());
break;
case KREDI_KART:
String odemeTur = satisBilgi.getOdemeTur();
banka = satisBilgi.getOdemeBilgisi().getPos();
islemTipi = "KREDİ KARTI İLE SATIŞ";
aciklama = banka.getBankaAd() + " POS";
addMusteriHareket(satis, islemTipi, aciklama, borc,
satisOdemeBilgisi.getKrediKartTutar(), KREDI_KART);
addPOSHareket(banka, islemTipi, aciklama, "",
satisBilgi.getTutar(), odemeTur, satisBilgi, new Date());
changePOSBakiye(banka, satisOdemeBilgisi.getKrediKartTutar());
break;
case PARCALI_ODEME:
islemTipi = "PARÇALI ÖDEME İLE SATIŞ";
aciklama = "NAKİT ÖDEME";
addMusteriHareket(satisBilgi, islemTipi, aciklama, borc,
satisOdemeBilgisi.getNakitTutar(), NAKIT);
changeKasaBakiye(satisKasasi, satisOdemeBilgisi.getNakitTutar());
aciklama = satisBilgi.getOdemeBilgisi().getPos() + " POS";
banka = satisBilgi.getOdemeBilgisi().getPos();
addMusteriHareket(satis, islemTipi, aciklama, borc,
satisOdemeBilgisi.getKrediKartTutar(), KREDI_KART);
addPOSHareket(banka, islemTipi, aciklama, "",
satisOdemeBilgisi.getKrediKartTutar(), KREDI_KART,
satisBilgi, new Date());
changePOSBakiye(banka, satisOdemeBilgisi.getKrediKartTutar());
break;
case VERESIYE:
islemTipi = "VERESİYE SATIŞ";
aciklama = "TAKSİTLİ ÖDEME";
borc = satisOdemeBilgisi.getTaksitTutar();
addMusteriHareket(satisBilgi, islemTipi, aciklama, borc,
satisOdemeBilgisi.getNakitTutar(), VERESIYE);
changeKasaBakiye(satisKasasi, satisOdemeBilgisi.getNakitTutar());
addMusteriBorc(satis.getMusteri(), borc);
break;
default:
break;
}
}
private static void addMusteriHareket(YapilanSatis satis, String islemTipi,
String aciklama, double borc, double tutar, String odemeTuru) {
satisKasasi = (Kasa) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Kasa.class, "kasaAd", SATIS_KASA);
musteriHareketi = new CariHareketleri();
musteriHareketi.setTarih(new Date());
musteriHareketi.setIslemTipi(islemTipi);
musteriHareketi.setAciklama(aciklama);
musteriHareketi.setMusteri(satis.getMusteri());
musteriHareketi.setOdemeTuru(odemeTuru);
musteriHareketi.setBorc(borc);
musteriHareketi.setTutar(Double.parseDouble(OndalikDeger
.ondalikDegerGetir(tutar)));
musteriHareketi.setSatis(satis);
HibernateManager.getInstance().save(musteriHareketi);
}
public static void addMusteriBorc(Cari cari, double borc) {
Cari musteri = (Cari) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Cari.class, "id", cari.getId(),
false);
musteri.setMusteriBorc(musteri.getMusteriBorc() + borc);
HibernateManager.getInstance().update(musteri);
}
private static boolean changeKasaBakiye(Kasa kasa, double tutar) {
kasa.setBakiye(Double.parseDouble(OndalikDeger.ondalikDegerGetir(kasa
.getBakiye() + tutar)));
return HibernateManager.getInstance().update(kasa);
}
public static boolean addBankaHareket(Banka pos, String islemTuru,
String dekontNo, String aciklama, double tutar, Date tarih,
YapilanSatis satis) {
String odemeTuru = "-";
switch (islemTuru) {
case YATIRMA:
islemTuru = YATIRMA;
if (aciklama.equals(""))
aciklama = pos + " PARA YATIRMA İŞLEMİ";
addPOSHareket(pos, islemTuru, aciklama, dekontNo, tutar, odemeTuru,
null, tarih);
break;
case CEKME:
tutar = tutar * -1;
islemTuru = CEKME;
if (aciklama.equals(""))
aciklama = pos + " PARA ÇEKME İŞLEMİ";
addPOSHareket(pos, islemTuru, aciklama, dekontNo, tutar, odemeTuru,
null, tarih);
break;
default:
break;
}
return changePOSBakiye(pos, tutar);
}
private static boolean addPOSHareket(Banka pos, String islemTuru,
String aciklama, String dekontNo, double tutar, String odemeTur,
YapilanSatis satis, Date tarih) {
posHareketi = new BankaHareketleri();
posHareketi.setOdemeTuru(odemeTur);
posHareketi.setSatis(satis);
posHareketi.setTarih(tarih);
posHareketi.setPos(pos);
posHareketi.setIslemTipi(islemTuru);
posHareketi.setAciklama(aciklama);
if (!dekontNo.equals(""))
posHareketi.setDekontNo(dekontNo);
posHareketi.setTutar(Double.parseDouble(OndalikDeger
.ondalikDegerGetir(tutar)));
return HibernateManager.getInstance().save(posHareketi);
}
private static boolean changePOSBakiye(Banka pos, double tutar) {
Banka bankaBilgi = (Banka) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Banka.class, "id", pos.getId(),
false);
bankaBilgi.setBakiye(Double.parseDouble(OndalikDeger
.ondalikDegerGetir(bankaBilgi.getBakiye() + tutar)));
return HibernateManager.getInstance().update(bankaBilgi);
}
public static boolean transfer(Banka cekilecekBanka,
Banka yatirilacakBanka, String dekontNo, String aciklama,
double tutar, double havaleMasrafi, Date tarih) {
satisKasasi = (Kasa) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Kasa.class, "kasaAd", SATIS_KASA);
posHareketi = new BankaHareketleri();
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(Double.parseDouble(OndalikDeger
.ondalikDegerGetir(tutar)));
boolean control = HibernateManager.getInstance().save(posHareketi);
if (control) {
changePOSBakiye(cekilecekBanka, tutar * -1);
changePOSBakiye(cekilecekBanka, havaleMasrafi * -1);
changePOSBakiye(yatirilacakBanka, tutar);
changeKasaBakiye(satisKasasi, 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.setTarih(tarih);
kasaHareketi.setTutar(Double.parseDouble(OndalikDeger
.ondalikDegerGetir(tutar)));
kasaHareketi.setAciklama(aciklama);
kasaHareketi.setSystemName(kasaBilgisi.getSystemName());
boolean control = HibernateManager.getInstance().save(kasaHareketi);
if (control) {
return changeKasaBakiye(kasaBilgisi, tutar);
}
return false;
}
public static void addIadeHareket(YapilanSatis satis, double tutar) {
String islemTipi = "ÜRÜN İADE";
String aciklama = "ÜRÜN PARA İADE";
addMusteriHareket(satis, islemTipi, aciklama, 0, tutar, NAKIT);
changeKasaBakiye(satisKasasi, tutar);
}
public static void addNakitTahsilatHareket(YapilanSatis satis, double tutar) {
satisKasasi = (Kasa) HibernateManager.getInstance()
.getObjectWithUniqueColumn(Kasa.class, "kasaAd", SATIS_KASA);
String islemTipi = TAKSIT_ODEME;
String aciklama = satis.getTarihBilgi() + " TARİHİNDE "
+ satis.getMusteriName() + " CARİSİNE VERESİYE SATIŞ";
addMusteriHareket(satis, islemTipi, aciklama, 0, tutar, NAKIT);
addMusteriBorc(satis.getMusteri(), -1 * tutar);
changeKasaBakiye(satisKasasi, tutar);
}
public static void addPOSTahsilatHareket(Banka banka, YapilanSatis satis,
double tutar) {
String islemTipi = TAKSIT_ODEME;
String aciklama = satis.getTarihBilgi() + " TARİHİNDE "
+ satis.getMusteriName() + " CARİSİNE VERESİYE SATIŞ";
addMusteriHareket(satis, islemTipi, aciklama, 0, tutar, KREDI_KART);
addPOSHareket(banka, islemTipi, aciklama, "", tutar, KREDI_KART, satis, new Date());
changePOSBakiye(banka, tutar);
addMusteriBorc(satis.getMusteri(), -1 * tutar);
}
public static void addVeresiyePesinatHareket(YapilanSatis satis,
double tutar) {
String islemTipi = TAKSIT_ODEME;
String aciklama = satis.getTarihBilgi() + " TARİHİNDE "
+ satis.getMusteriName() + " CARİSİNE VERESİYE SATIŞ";
addMusteriHareket(satis, islemTipi, aciklama, 0, tutar, NAKIT);
}
}