Пример #1
0
        /// <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));
            }
        }
Пример #2
0
        /// <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));
            }
        }