/// <summary> /// Alımdan Iade faturası /// </summary> public Result AlımdanIadeFaturaKayıt(int irsId, string depoKodu, bool efatKullanici, int tarih, string chk, string kaydeden, int irsaliyeSeri, int yil) { var STIBaseList = new List <ParamSti>(); var tempEvrakNo = ""; // evrak no getir List <EvrakBilgi> evrkno; try { evrkno = FtrKayit.EvrakNo_Getir(efatKullanici, irsaliyeSeri, yil, FaturaTipi.AlimdanIadeFaturası.ToInt32()); } catch (Exception ex) { return(new Result(false, ex.Message)); } var saat = DateTime.Now.ToOaTime(); // listeyi dön var sql = string.Format("SELECT MalKodu, Miktar, Birim, KynkSiparisNo as EvrakNo, KynkSiparisID AS Row_ID FROM wms.IRS_Detay WITH (NOLOCK) WHERE IrsaliyeID={0}", irsId); var list = Db.Database.SqlQuery <STIMax>(sql).ToList(); foreach (STIMax item in list) { tempEvrakNo = item.EvrakNo; sql = string.Format("SELECT STI.ROW_ID,STI.IslemTur,STI.EvrakTarih,STI.MhsKod as STIMhsKod,STI.Nesne1,STI.Nesne2,STI.Nesne3, STI.Chk,STI.IslemTip,STI.Miktar,STI.Miktar - STI.ErekIIFMiktar AS ErekIIFMiktar,STI.MalKodu,STI.Fiyat,STI.Birim," + "STI.Depo,STI.ToplamIskonto,STI.KDV,STI.KDVOran,STI.IskontoOran1,STI.IskontoOran2,STI.IskontoOran3,STI.IskontoOran4,STI.IskontoOran5,STI.EvrakNo as KaynakIIFEvrakNo,STI.KaynakSiparisNo," + "STI.Tarih as KaynakSiparisTarih,STI.SiraNo,STI.KaynakSiraNo,STI.SiparisSiraNo," + "STI.Miktar as SiparisMiktar,STI.FytListeNo,STI.ValorGun,STI.Kod1,STI.Kod2,STI.Kod3,STI.Kod4,STI.Kod5,STI.Kod6,STI.Kod7,STI.Kod8,STI.Kod9,STI.Kod10," + "STI.Kod11,STI.Kod12,STI.Kod13,STI.Kod14,STI.KayitKaynak,STI.KayitSurum,STI.DegisKaynak,STI.DegisSurum,STI.SevkTarih as SevkTarih,STI.KaynakIrsTarih as KaynakIrsTarih," + "STI.KaynakSiparisTarih as KaynakSiparisTarih2,STI.Kredi_Donem_VadeTarih,STI.KaynakIrsEvrakNo,STK.AlimdanIade as MhsKod,CHK.EFatKullanici, STK.SatislarHesabi," + "CHK.EArsivTeslimSekli,CHK.MhsKod As CHKMhsKod,CHK.EFatSenaryo " + ", MFK.Tutar AS MFKTutar, MFK.Aciklama AS MFKAciklama , MFK.Aciklama2 AS MFKAciklama2 , MFK.Aciklama3 AS MFKAciklama3 , MFK.Aciklama4 AS MFKAciklama4 , MFK.Aciklama5 AS MFKAciklama5, MFK.Aciklama6 AS MFKAciklama6 " + "FROM FINSAT6{0}.FINSAT6{0}.STI WITH (NOLOCK) LEFT JOIN FINSAT6{0}.FINSAT6{0}.CHK WITH (NOLOCK) ON STI.Chk=CHK.HesapKodu LEFT JOIN FINSAT6{0}.FINSAT6{0}.STK WITH (NOLOCK) ON STK.MalKodu=STI.MalKodu " + "LEFT JOIN FINSAT6{0}.FINSAT6{0}.MFK WITH (NOLOCK) ON MFK.EvrakNo=STI.EvrakNo AND MFK.KynkEvrakTip=STI.KynkEvrakTip AND MFK.HesapKod=STI.Chk " + "WHERE (STI.EvrakNo = '{1}') AND (STI.Chk = '{2}') AND (STI.Depo = '{3}') AND (STI.Row_ID = '{4}') AND (STI.KynkEvrakTip = 4)", SirketKodu, item.EvrakNo, chk, depoKodu, item.Row_ID); var finsat = Db.Database.SqlQuery <ParamSti>(sql).FirstOrDefault(); if (finsat != null) { finsat.Miktar = item.Miktar; finsat.EvrakNo = evrkno[0].EvrakNo; finsat.Tarih = finsat.KaynakSiparisTarih; finsat.Kaydeden = kaydeden; finsat.KayitSurum = "9.01.028"; finsat.KayitKaynak = 74; STIBaseList.Add(finsat); } } // finsat işlemleri try { if (STIBaseList.Count > 0) { var parametre = new FaturaKayitParametre() { paramStiList = STIBaseList, EFatKullanici = efatKullanici, kullaniciSeri = irsaliyeSeri, muhasebeYili = yil, faturaTipi = FaturaTipi.AlimdanIadeFaturası.ToInt32(), KebirKod = "391", MhsKarsiKod = SirketKodu == "33" ? "391 000" : "391 01 001", IadeMhsKarsiKod = SirketKodu == "33" ? "391 000" : "391 01 002", StiMhsKod = STIBaseList[0].SatislarHesabi, CHIMhsKod = STIBaseList[0].CHKMhsKod.IsNotNull() ? STIBaseList[0].CHKMhsKod.ToString() : "" }; return(FtrKayit.FaturaKaydet(parametre)); } else { return(new Result(false, "Bu sipariş kapanmış. Evrak No= " + tempEvrakNo)); } } catch (Exception ex) { return(new Result(false, ex.Message)); } }
/// <summary> /// satış irsaliyesi ve faturası /// </summary> public Result FaturaKayıt(int irsId, string depoKodu, bool efatKullanici, int tarih, string chk, string kaydeden, int irsaliyeSeri, int faturaSeri, int yil) { var stiBaseList = new List <ParamSti>(); var tempEvrakNo = ""; List <STIBase> stiBaseListSpi = new List <STIBase>(); List <STIMax> stList = new List <STIMax>(); List <EvrakBilgi> evrkno = new List <EvrakBilgi>(); var saat = DateTime.Now.ToOaTime(); //iç piyasa için evrak no oluşturur var sql = string.Format(@" SELECT MalKodu, Miktar, Birim, KynkSiparisNo as EvrakNo, KynkSiparisTarih, KynkSiparisSiraNo, (SELECT IslemTip FROM FINSAT6{0}.FINSAT6{0}.SPI WITH (NOLOCK) WHERE KynkEvrakTip=62 AND SPI.EvrakNo= wms.IRS_Detay.KynkSiparisNo AND SiraNo=wms.IRS_Detay.KynkSiparisSiraNo AND Tarih=wms.IRS_Detay.KynkSiparisTarih) AS SipIslemTip FROM wms.IRS_Detay WITH (NOLOCK) WHERE IrsaliyeID={1}", SirketKodu, irsId); var list = Db.Database.SqlQuery <STIMax>(sql).ToList(); if (list.Where(x => x.SipIslemTip == 1).ToList().Count > 0) { try { evrkno = FtrKayit.EvrakNo_Getir(efatKullanici, irsaliyeSeri, yil, FaturaTipi.SatisFaturası.ToInt32()); } catch (Exception ex) { return(new Result(false, ex.Message)); } } //İç Piyasa için Satış Faturası bilgileri oluşturulur foreach (STIMax item in list.Where(x => x.SipIslemTip == 1).ToList()) { tempEvrakNo = item.EvrakNo; sql = string.Format(@"SELECT SPI.Chk, SPI.IslemTip, SPI.Miktar, SPI.MalKodu, SPI.Fiyat, SPI.Birim, SPI.Depo, SPI.ToplamIskonto, SPI.KDV, SPI.KDVOran, SPI.IskontoOran1, SPI.IskontoOran2, SPI.IskontoOran3, SPI.IskontoOran4, SPI.IskontoOran5, SPI.EvrakNo as KaynakSiparisNo,SPI.VadeTarih, SPI.Tarih as KaynakSiparisTarih, SPI.SiraNo as SiparisSiraNo, SPI.Miktar as SiparisMiktar, SPI.TeslimMiktar, SPI.KapatilanMiktar, SPI.FytListeNo, SPI.ValorGun, SPI.Kod1, SPI.Kod2, SPI.Kod3, SPI.Kod4, SPI.Kod5, SPI.Kod6, SPI.Kod7, SPI.Kod8, SPI.Kod9, SPI.Kod10, SPI.Kod11, SPI.Kod12, SPI.Kod13, SPI.Kod14, SPI.KayitKaynak, SPI.KayitSurum, SPI.DegisKaynak, SPI.DegisSurum, CHK.EFatKullanici, STK.SatislarHesabi, CHK.EArsivTeslimSekli, CHK.MhsKod, CHK.EFatSenaryo, MFK.Tutar AS MFKTutar, MFK.Aciklama AS MFKAciklama , MFK.Aciklama2 AS MFKAciklama2 , MFK.Aciklama3 AS MFKAciklama3 , MFK.Aciklama4 AS MFKAciklama4 , MFK.Aciklama5 AS MFKAciklama5, MFK.Aciklama6 AS MFKAciklama6 FROM FINSAT6{0}.FINSAT6{0}.SPI WITH (NOLOCK) LEFT JOIN FINSAT6{0}.FINSAT6{0}.CHK WITH (NOLOCK) ON SPI.Chk=CHK.HesapKodu LEFT JOIN FINSAT6{0}.FINSAT6{0}.STK WITH (NOLOCK) ON STK.MalKodu=SPI.MalKodu LEFT JOIN FINSAT6{0}.FINSAT6{0}.MFK WITH (NOLOCK) ON MFK.EvrakNo=SPI.EvrakNo AND MFK.KynkEvrakTip=SPI.KynkEvrakTip AND MFK.HesapKod=SPI.Chk WHERE (SPI.EvrakNo = '{1}') AND (SPI.Chk = '{2}') AND (SPI.Depo = '{3}') AND (SPI.Tarih = {4}) AND (SPI.SiraNo = {5}) AND (SPI.KynkEvrakTip = 62) AND (SPI.SiparisDurumu = 0) AND (SPI.Kod10 IN ('Terminal', 'Onaylandı'))", SirketKodu, item.EvrakNo, chk, depoKodu, item.KynkSiparisTarih, item.KynkSiparisSiraNo); var finsat = Db.Database.SqlQuery <ParamSti>(sql).FirstOrDefault(); if (finsat != null) { finsat.Miktar = item.Miktar; finsat.EvrakNo = evrkno[0].EvrakNo; finsat.KaynakIrsEvrakNo = evrkno[1].EvrakNo; finsat.KaynakIrsTarih = evrkno[1].EvrakNo.Trim() != "" ? DateTime.Today.ToOADate().ToInt32() : 0; finsat.Tarih = finsat.KaynakSiparisTarih; finsat.CHKMhsKod = finsat.MhsKod; finsat.MhsKod = SirketKodu == "33" ? "391 000" : "391 01 001"; finsat.Kaydeden = kaydeden; finsat.KayitSurum = "9.01.028"; finsat.KayitKaynak = 70; stiBaseList.Add(finsat); } } //dış piyasa için ayrı evrak no oluşturur if (list.Where(x => x.SipIslemTip == 2).ToList().Count > 0) { try { evrkno = FtrKayit.EvrakNo_Getir(efatKullanici, irsaliyeSeri, yil, FaturaTipi.SatisIrsaliyesi.ToInt32()); } catch (Exception ex) { return(new Result(false, ex.Message)); } } //Dış Piyasa için Satış İrsaliye bilgileri oluşturur foreach (STIMax item in list.Where(x => x.SipIslemTip == 2).ToList()) { tempEvrakNo = item.EvrakNo; var sqlSPI = string.Format("SELECT IRS.EvrakNo, IRS_Detay.IrsaliyeID, IRS_Detay.MalKodu, SUM(wms.IRS_Detay.Miktar) AS Miktar, IRS_Detay.Birim, SUM(wms.IRS_Detay.Miktar) AS OkutulanMiktar, Depo.DepoKodu, IRS.HesapKodu, IRS.Tarih, " + "(SELECT MalAdi FROM FINSAT6{0}.FINSAT6{0}.STK WITH(NOLOCK) WHERE (MalKodu = IRS_Detay.MalKodu)) AS MalAdi," + "ISNULL(IRS_Detay.KynkSiparisNo, '') AS SiparisNo, ISNULL(IRS_Detay.KynkSiparisSiraNo, 0) AS KynkSiparisSiraNo, ISNULL(IRS_Detay.KynkSiparisTarih, 0) AS KynkSiparisTarih, ISNULL(IRS_Detay.KynkSiparisMiktar, 0) AS KynkSiparisMiktar, " + "FINSAT6{0}.FINSAT6{0}.SPI.BirimFiyat AS Fiyat, FINSAT6{0}.FINSAT6{0}.SPI.KDVOran, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran1, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran2, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran3, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran4, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran5, FINSAT6{0}.FINSAT6{0}.SPI.IslemTip AS SipIslemTip, FINSAT6{0}.FINSAT6{0}.SPI.DovizCinsi AS DovizCinsi,FINSAT6{0}.FINSAT6{0}.CHK.EFatSenaryo,FINSAT6{0}.FINSAT6{0}.CHK.EArsivTeslimSekli,FINSAT6{0}.FINSAT6{0}.CHK.EFatEtiket AS EFatEtiketPK,ISNULL((SELECT EfatEtiketGB FROM SOLAR6.DBO.SIR(NOLOCK) INNER JOIN SOLAR6.DBO.SDK(NOLOCK) ON SIR.Kod = SDK.SirketKod WHERE SDK.Kod = '{0}' AND SDK.Tip = 0), '') AS EfatEtiketGB, FINSAT6{0}.FINSAT6{0}.SPI.ValorGun " + "FROM FINSAT6{0}.FINSAT6{0}.SPI WITH (NOLOCK)" + "INNER JOIN FINSAT6{0}.FINSAT6{0}.CHK WITH (NOLOCK) ON SPI.Chk = CHK.HesapKodu RIGHT OUTER JOIN wms.Depo WITH(NOLOCK) INNER JOIN wms.IRS WITH(NOLOCK) ON wms.Depo.ID = wms.IRS.DepoID INNER JOIN wms.IRS_Detay WITH(NOLOCK) ON wms.IRS.ID = wms.IRS_Detay.IrsaliyeID ON FINSAT6{0}.FINSAT6{0}.SPI.Chk = wms.IRS.HesapKodu AND FINSAT6{0}.FINSAT6{0}.SPI.Tarih = wms.IRS_Detay.KynkSiparisTarih AND FINSAT6{0}.FINSAT6{0}.SPI.SiraNo = wms.IRS_Detay.KynkSiparisSiraNo AND FINSAT6{0}.FINSAT6{0}.SPI.EvrakNo = wms.IRS_Detay.KynkSiparisNo " + "WHERE (IRS_Detay.IrsaliyeID = {1}) " + "GROUP BY wms.IRS.EvrakNo, wms.IRS_Detay.IrsaliyeID, wms.IRS_Detay.MalKodu, wms.IRS_Detay.Birim, wms.Depo.DepoKodu, wms.IRS.HesapKodu, wms.IRS.Tarih, ISNULL(wms.IRS_Detay.KynkSiparisNo, ''), ISNULL(wms.IRS_Detay.KynkSiparisSiraNo, 0), ISNULL(wms.IRS_Detay.KynkSiparisTarih, 0), ISNULL(wms.IRS_Detay.KynkSiparisMiktar, 0), FINSAT6{0}.FINSAT6{0}.SPI.BirimFiyat, FINSAT6{0}.FINSAT6{0}.SPI.KDVOran, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran1, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran2, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran3, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran4, FINSAT6{0}.FINSAT6{0}.SPI.IskontoOran5, FINSAT6{0}.FINSAT6{0}.SPI.IslemTip, FINSAT6{0}.FINSAT6{0}.SPI.DovizCinsi,FINSAT6{0}.FINSAT6{0}.CHK.EFatSenaryo,FINSAT6{0}.FINSAT6{0}.CHK.EArsivTeslimSekli,FINSAT6{0}.FINSAT6{0}.CHK.EFatEtiket, FINSAT6{0}.FINSAT6{0}.SPI.ValorGun", SirketKodu, irsId); stList = Db.Database.SqlQuery <STIMax>(sqlSPI).ToList(); foreach (STIMax stItem in stList) { var sti = new STIBase() { EvrakNo = evrkno[0].EvrakNo, HesapKodu = stItem.HesapKodu, Tarih = stItem.KynkSiparisTarih == 0 ? DateTime.Today.ToOADate().ToInt32() : stItem.KynkSiparisTarih, MalKodu = stItem.MalKodu, Miktar = stItem.OkutulanMiktar, Birim = stItem.Birim, Depo = stItem.DepoKodu, EvrakTipi = STIEvrakTipi.SatisIrsaliyesi, Kaydeden = kaydeden, KayitSurum = "9.01.028", KayitKaynak = 70, IslemTip = stItem.SipIslemTip, DovizCinsi = stItem.DovizCinsi, EFatSenaryo = stItem.EFatSenaryo, EArsivTeslimSekli = stItem.EArsivTeslimSekli, EFatEtiketGB = stItem.EFatEtiketGB, EFatEtiketPK = stItem.EFatEtiketPK, ValorGun = stItem.ValorGun }; if (stItem.SiparisNo != "" && stItem.KynkSiparisMiktar > 0) { sti.KayitTipi = STIKayitTipi.Siparisten_Irsaliye; sti.KaynakSiparisNo = stItem.SiparisNo; sti.KaynakSiparisTarih = stItem.KynkSiparisTarih; sti.SiparisSiraNo = stItem.KynkSiparisSiraNo; sti.SiparisMiktar = stItem.KynkSiparisMiktar; sti.Fiyat = stItem.Fiyat; } else { sti.KayitTipi = STIKayitTipi.Irsaliye; sti.KaynakSiparisNo = ""; sti.KaynakSiparisTarih = 0; sti.SiparisSiraNo = 0; sti.SiparisMiktar = 0; } stiBaseListSpi.Add(sti); } } // finsat işlemlerini çalıştırır ve veritabanına kaydeder try { Result result; if (stiBaseList.Count > 0) { var parametre = new FaturaKayitParametre() { paramStiList = stiBaseList, EFatKullanici = efatKullanici, kullaniciSeri = faturaSeri, muhasebeYili = yil, faturaTipi = FaturaTipi.SatisFaturası.ToInt32(), KebirKod = "391", MhsKarsiKod = SirketKodu == "33" ? "391 000" : "391 01 001", IadeMhsKarsiKod = SirketKodu == "33" ? "391 000" : "391 01 002", StiMhsKod = stiBaseListSpi.Count > 0 ? "601 001" : stiBaseList[0].SatislarHesabi, CHIMhsKod = stiBaseList[0].CHKMhsKod.IsNotNull() ? stiBaseList[0].CHKMhsKod.ToString() : "" }; result = FtrKayit.FaturaKaydet(parametre); if (result.Status == false) { return(new Result(false, "Hata: " + result.Message)); } } if (stiBaseListSpi.Count > 0) { result = new Irsaliye_Islemleri(SirketKodu, SqlExper).Irsaliye_Kayit(irsaliyeSeri, efatKullanici, stiBaseListSpi); if (result.Status == false) { return(new Result(false, "Hata: " + result.Message)); } } if (stiBaseList.Count <= 0 && stiBaseListSpi.Count <= 0) { return(new Result(false, "Bu sipariş kapanmış. Evrak No= " + tempEvrakNo)); } else { return(new Result(true, evrkno[0].EvrakNo + "," + list[0].EvrakNo)); } } catch (Exception ex) { return(new Result(false, ex.Message)); } }