void SQL_INDEX_BATCH::RUN_BATCH()
{
    for ( int i = 0; i < NUMBER_OF_ROWS; i++ ) {
        for( int k = 0; k < NUMBER_OF_COMBOBOX; k++ ) {
            if (COMBOBOX_ARRAY[i][k]->currentIndex() EQ 0 ) {
                INDEXLER_ARRAY[NUMBER_OF_COMBOBOX + k + NUMBER_OF_COMBOBOX*i] = 0;
            }
            else {
                INDEXLER_ARRAY[NUMBER_OF_COMBOBOX + k + NUMBER_OF_COMBOBOX*i] =
                        GET_ALAN_ID(p_tablo_id, COMBOBOX_ARRAY[i][k]->currentText());
            }
        }
    }

    QString array_content = PACK_INT_ARRAY(INDEXLER_ARRAY,INDEXLER_ARRAY_SIZE);

    SQL_QUERY query (DB);

    query.PREPARE_UPDATE("sql_tablolar","tablo_id","indexler_array","tablo_id=:tablo_id");

    query.SET_VALUE     (":indexler_array",array_content);
    query.SET_VALUE     (":tablo_id"      ,p_tablo_id);

    query.UPDATE();

    DB->COMMIT_TRANSACTION();
}
int GRP_GRUP_EKLE ( ADAK_GRUP_STRUCT * grup )
{
    int     grup_seviyesi       = 0;
    int     alt_grup_sayisi     = 0;
    QString tam_grup_kodu       = grup->grup_kodu;

    SQL_QUERY query ( DB );

    if (grup->grup_parent_id > 0) {
        query.PREPARE_SELECT("adak_gruplar","grup_seviyesi, tam_grup_kodu,alt_grup_sayisi","grup_id = :grup_id","");
        query.SET_VALUE(":grup_id" , grup->grup_parent_id);

        if (query.SELECT() NE 0) {
            query.NEXT();

            grup_seviyesi          = query.VALUE("grup_seviyesi").toInt() + 1;
            tam_grup_kodu.prepend(QString (" " + query.VALUE("tam_grup_kodu").toString()));
            alt_grup_sayisi        = query.VALUE("alt_grup_sayisi").toInt();
        }

        query.PREPARE_UPDATE("adak_gruplar","grup_id","grup_son_seviye_mi, alt_grup_sayisi = alt_grup_sayisi + 1","grup_id = :grup_id");
        query.SET_VALUE(":grup_son_seviye_mi",0);
        query.SET_VALUE(":alt_grup_sayisi"   ,(alt_grup_sayisi+1));
        query.SET_VALUE(":grup_id"           ,grup->grup_parent_id);
        query.UPDATE();
    }

    query.PREPARE_INSERT("adak_gruplar","grup_id","grup_parent_id,grup_seviyesi, "
                         "grup_son_seviye_mi, gruptaki_kayit_sayisi,alt_grup_sayisi,modul_id, "
                         "program_id, grup_kodu,grup_adi,tam_grup_kodu");

    query.SET_VALUE(":grup_parent_id"       , grup->grup_parent_id);
    query.SET_VALUE(":grup_seviyesi"        , grup_seviyesi);
    query.SET_VALUE(":grup_son_seviye_mi"   , 1);
    query.SET_VALUE(":gruptaki_kayit_sayisi", 0);
    query.SET_VALUE(":alt_grup_sayisi"      , 0);
    query.SET_VALUE(":modul_id"             , grup->modul_id);
    query.SET_VALUE(":program_id"           , grup->program_id);
    query.SET_VALUE(":grup_kodu"            , grup->grup_kodu);
    query.SET_VALUE(":grup_adi"             , grup->grup_adi);
    query.SET_VALUE(":tam_grup_kodu"        , tam_grup_kodu);

    return query.INSERT();
}
Beispiel #3
0
int SQL_TABLOLAR_FISI::ADD_FIS_RECORD()
{
    SQL_QUERY sql_query ( DB );
    sql_query.PREPARE_INSERT ( "sql_tablolar","tablo_id","tablo_adi, aciklama");
    sql_query.SET_VALUE (":tablo_adi"    , m_ui->lineEdit_tablo_adi->text()              );
    sql_query.SET_VALUE (":aciklama"     , m_ui->limitedTextEdit_aciklama->toPlainText() );

    int tablo_id = sql_query.INSERT();

    sql_query.PREPARE_INSERT( "sql_alanlar","alan_id", "tablo_id, alan_order_num, alan_adi, veritabanindaki_adi, "
                              "alan_tipi, uzunluk, auto_increment_mi, not_null_mi, dizi_mi, dizi_boyutu, aciklama ");

    sql_query.SET_VALUE ( ":tablo_id"            , tablo_id                         );
    sql_query.SET_VALUE ( ":alan_order_num"      , 1                                );
    sql_query.SET_VALUE ( ":alan_adi"            , m_ui->lineEdit_alan_adi->text()  );
    sql_query.SET_VALUE ( ":veritabanindaki_adi" , m_ui->lineEdit_alan_adi->text()  );
    sql_query.SET_VALUE ( ":alan_tipi"           , "INTEGER"                        );
    sql_query.SET_VALUE ( ":uzunluk"             , 0                                );
    sql_query.SET_VALUE ( ":auto_increment_mi"   , 1                                );
    sql_query.SET_VALUE ( ":not_null_mi"         , 1                                );
    sql_query.SET_VALUE ( ":dizi_mi"             , 0                                );
    sql_query.SET_VALUE ( ":dizi_boyutu"         , 1                                );
    sql_query.SET_VALUE ( ":aciklama"            , tr("Column for Table UNIQUE FIELD ID"));//Tablo UNIQUE ALAN ID kolonu

    int row_id = sql_query.INSERT();

    int indexler_array [INDEXLER_ARRAY_SIZE] = {0};
    indexler_array[0]                        = row_id;

    QString array_content = PACK_INT_ARRAY(indexler_array,INDEXLER_ARRAY_SIZE);

    SQL_QUERY query (DB);

    query.PREPARE_UPDATE("sql_tablolar","tablo_id","indexler_array","tablo_id=:tablo_id");

    query.SET_VALUE     (":indexler_array",array_content);
    query.SET_VALUE     (":tablo_id"      ,tablo_id);

    query.UPDATE();

    return tablo_id;
}
void GRP_KAYDI_GRUPLARA_EKLE ( int program_id , int module_id ,int record_id , QList<int> * grup_idleri )
{
    QString gruplar_str = "";

    SQL_QUERY query    ( DB );

    if (grup_idleri->size() NE 0) {
        for ( int i = 0 ; i < grup_idleri->size() ; i++ ) {
            gruplar_str.append("\t");
            gruplar_str.append(QVariant(grup_idleri->at(i)).toString());
            gruplar_str.append("\t");
        }
    }

    query.PREPARE_SELECT ( "adak_kaydin_gruplari","id,gruplar","record_id = :record_id AND module_id = :module_id AND program_id = :program_id" ,"");

    query.SET_VALUE ( ":record_id" , record_id  );
    query.SET_VALUE ( ":module_id" , module_id  );
    query.SET_VALUE ( ":program_id", program_id );

    if ( query.SELECT() NE 0 ) {
        query.NEXT();
        int id              = query.VALUE(0).toInt();
        QStringList gruplar = query.VALUE(1).toString().split("\t",QString::SkipEmptyParts);

        query.PREPARE_UPDATE("adak_kaydin_gruplari","id","gruplar","id = :id");
        query.SET_VALUE(":gruplar" ,QVariant(gruplar_str).toByteArray());
        query.SET_VALUE(":id",id);
        query.UPDATE();

        for ( int i = 0 ; i < grup_idleri->size() ; i++ ) {
            if (gruplar.contains(QVariant(grup_idleri->at(i)).toString()) EQ true) {
                gruplar.removeAt(i);
                continue;
            }
            query.PREPARE_SELECT("adak_gruplar","gruptaki_kayit_sayisi","grup_id=:grup_id","");
            query.SET_VALUE(":grup_id",grup_idleri->at(i));
            if ( query.SELECT() EQ 0 ) {
                return;
            }
            query.NEXT();

            int value = query.VALUE(0).toInt();

            query.PREPARE_UPDATE("adak_gruplar","grup_id","gruptaki_kayit_sayisi","grup_id=:grup_id");
            query.SET_VALUE(":gruptaki_kayit_sayisi",(value+1));
            query.SET_VALUE(":grup_id",grup_idleri->at(i));
            query.UPDATE();
        }

        for ( int i = 0 ; i < gruplar.size() ; i++ ) {
            if (gruplar.at(i).toInt() NE 0 ) {
                query.PREPARE_SELECT("adak_gruplar","gruptaki_kayit_sayisi","grup_id=:grup_id","");
                query.SET_VALUE(":grup_id",gruplar.at(i));
                if ( query.SELECT() EQ 0 ) {
                    return;
                }
                query.NEXT();

                int value = query.VALUE(0).toInt();

                query.PREPARE_UPDATE("adak_gruplar","grup_id","gruptaki_kayit_sayisi","grup_id=:grup_id AND gruptaki_kayit_sayisi > 0 ");
                query.SET_VALUE(":gruptaki_kayit_sayisi",(value - 1));
                query.SET_VALUE(":grup_id",gruplar.at(i));
                query.UPDATE();
            }
        }

        return;
    }

    query.PREPARE_INSERT("adak_kaydin_gruplari","id", "record_id,gruplar,module_id,program_id ");

    query.SET_VALUE(":record_id", record_id    );
    query.SET_VALUE(":gruplar",   QVariant(gruplar_str).toByteArray() );
    query.SET_VALUE(":module_id", module_id    );
    query.SET_VALUE(":program_id",program_id   );

    query.INSERT();

    for ( int i = 0 ; i < grup_idleri->size() ; i++ ) {
        query.PREPARE_SELECT("adak_gruplar","gruptaki_kayit_sayisi","grup_id=:grup_id","");
        query.SET_VALUE(":grup_id",grup_idleri->at(i));
        if ( query.SELECT() EQ 0 ) {
            return;
        }
        query.NEXT();

        int value = query.VALUE(0).toInt();

        query.PREPARE_UPDATE("adak_gruplar","grup_id","gruptaki_kayit_sayisi","grup_id=:grup_id");
        query.SET_VALUE(":gruptaki_kayit_sayisi",(value+1));
        query.SET_VALUE(":grup_id",grup_idleri->at(i));
        query.UPDATE();;
    }
}
void CHECK_VERSION_UPGRADES (QString program_version_column_name , QString program_version_db_name, void UPGRADE_TO_VERSION_FUNC(QString) )
{
    SQL_QUERY query      ( DB );

    query.PREPARE_SELECT(program_version_db_name,program_version_column_name);

    if ( query.SELECT() EQ 0 ) {
        return;
    }
    query.NEXT();

    double program_version_in_db = query.VALUE(0).toDouble();
    double new_program_version   = ADAK_PROGRAM_VERSION(ADAK_VERITABANI_ID()).toDouble();

    if (program_version_in_db EQ new_program_version) {
        return;
    }

    if ( program_version_in_db > new_program_version ) {
        ADAK_ERROR(QObject::tr("Version of this program is smaller than the version of the database. Update the program, otherwise the data will be corrupted."),NULL,NULL);
        exit(77);//Bu programın versiyonu , veritabanının versiyonundan daha küçük. Programı güncelleyin , aksi taktirde verileriniz bozulur.
    }

    VERITABANLARINI_GUNCELLE();

//    QSplashScreen * splash = CREATE_SPLASH_SCREEN();
//    splash->show();
//    splash->showMessage((QString(QObject::tr("Upgrading Programme. Please wait..."))), Qt::AlignCenter, Qt::white );//Programınızın versiyonu yükseltiliyor. Lütfen Bekleyiniz...

    double current_program_version = program_version_in_db;

    DB->START_TRANSACTION();

    while ( current_program_version < new_program_version ) {        

        QString version = QVariant(current_program_version).toString();

        QStringList info = version.split(".",QString::SkipEmptyParts,Qt::CaseInsensitive);

        version.clear();

        if (info.size() NE 2) {
            version.append(info.at(0) + ".00");
        }
        else {
            if (info.at(1).size() NE 2) {
                version.append(info.at(0) + "." + info.at(1) + "0");
            }
            else {
                version.append(info.at(0) + "." + info.at(1));
            }
        }

        UPGRADE_TO_VERSION_FUNC(version);
        current_program_version = ROUND (current_program_version + 0.01);
    }

    query.PREPARE_UPDATE (program_version_db_name , "" , program_version_column_name , "");
    query.SET_VALUE ( QString(":%1").arg(program_version_column_name) , ADAK_PROGRAM_VERSION(ADAK_VERITABANI_ID()).toDouble());

    query.UPDATE();

//    splash->finish(NULL);

//    ADAK_WARNING(QObject::tr("Version of programme is upgrade.\n")+
//                QObject::tr("Please check User Authority for new properties. \n")+
//                QObject::tr("You can set User Authorization in the User's Screen.\n\n")+
//                QObject::tr("You can use Management Actions -> E9 repair for resolving some errors.")
//                ,NULL,NULL);

    DB->COMMIT_TRANSACTION();
}
void FAT_TOPLU_FATURALASTIR_ARAMA::FATURALASTIR( int p_irsaliye_fis_id )
{
    SQL_QUERY query ( DB );

    FATURA_FISI_STRUCT          * FATURA_FISI           =   new FATURA_FISI_STRUCT;
    FATURA_FIS_SATIRI_STRUCT    * FATURA_FIS_SATIRI     =   new FATURA_FIS_SATIRI_STRUCT;

    FATURA_FISI->KDV_ORANLARI_ARRAY                     =   new double  [KDV_OTV_ORANLARI_SAYISI];
    FATURA_FISI->KDV_HESAPLARI_ID_ARRAY                 =   new int     [KDV_OTV_ORANLARI_SAYISI];
    FATURA_FISI->KDV_ORANINA_GORE_TUTARLAR_ARRAY        =   new double  [KDV_OTV_ORANLARI_SAYISI];

    FATURA_FISI->OTV_ORANLARI_ARRAY                     =   new double  [KDV_OTV_ORANLARI_SAYISI];
    FATURA_FISI->OTV_HESAPLARI_ID_ARRAY                 =   new int     [KDV_OTV_ORANLARI_SAYISI];
    FATURA_FISI->OTV_ORANINA_GORE_TUTARLAR_ARRAY        =   new double  [KDV_OTV_ORANLARI_SAYISI];

    FATURA_FISI->TEVKIFATLI_KDV_HESAPLARI_ID_ARRAY      =   new int     [KDV_OTV_ORANLARI_SAYISI];

    FATURA_CLEAR_FIS_STRUCT ( FATURA_FISI );

    FATURA_KDV_OTV_DEGISKENLERINE_ILK_DEGERLERINI_YAZ  ( FATURA_FISI );

    STK_IRS_FIS_STRUCT       * STK_FIS        = new STK_IRS_FIS_STRUCT;
    STK_IRS_FIS_SATIR_STRUCT * STK_FIS_SATIRI = new STK_IRS_FIS_SATIR_STRUCT;

    STK_IRS_CLEAR_FIS_STRUCT( STK_FIS );

    STK_IRS_FIS_BILGILERINI_OKU( p_irsaliye_fis_id, STK_FIS );


    QString     cari_hesap_adresi;

    cari_hesap_adresi = CARI_GET_ADRES_BILGILERI( STK_FIS->cari_hesap_id );


    DB->START_TRANSACTION   ();

    //FATURA KAYDI EKLENECEK

    SUBE_UNITE_BILGILERI_STRUCT UNITE_BILG;

    SUBE_UNITE_BILGILERI_OKU( &UNITE_BILG, SUBE_GET_UNITE_ID() );

    FATURA_FISI->belge_numarasi                 = UNITE_BILG.fatura_belge_numarasi;
    FATURA_FISI->belge_seri                     = UNITE_BILG.fatura_belge_seri;

    FATURA_FISI->fis_no                         = FAT_SIRADAKI_FIS_NO_AL ( m_ui->adakDate_fatura_tarihi->DATE() );
    FATURA_FISI->aciklama                       = tr ( "Fatura, toplu irsaliye faturalaştırma işlemi sonucu üretilmiştir." );
    FATURA_FISI->fatura_tarihi                  = m_ui->adakDate_fatura_tarihi->DATE();
    FATURA_FISI->fatura_turu                    = ENUM_FAT_IRSALIYESIZ_SATIS_FATURASI;
    FATURA_FISI->fatura_alis_satis_turu         = ENUM_SATIS_IRSALIYESI_FATURASI;
    FATURA_FISI->acik_kapali_fatura             = ENUM_ACIK_FATURA;
    FATURA_FISI->cari_hesap_id                  = STK_FIS->cari_hesap_id;
    FATURA_FISI->cari_hesap_ismi                = STK_FIS->cari_hesap_ismi;
    FATURA_FISI->cari_hesap_adresi              = cari_hesap_adresi;
    FATURA_FISI->vergi_dairesi                  = STK_FIS->vergi_dairesi;
    FATURA_FISI->vergi_numarasi                 = STK_FIS->vergi_numarasi;
    FATURA_FISI->modul_id                       = FATURA_MODULU;
    FATURA_FISI->program_id                     = E9_PROGRAMI;
    FATURA_FISI->fatura_irsaliyelestirildi_mi   = 1;

    int fatura_fis_id = FATURA_FISI_EKLE ( FATURA_FISI );

    //FATURA SATIRLARI EKLENECEK
    //faturaya referans eden irsaliyeler kaydediliyor.

    query.PREPARE_INSERT("fat_irs_baglantisi" , "kayit_id" , "fatura_id, irsaliye_id");

    query.SET_VALUE ( ":fatura_id"   , fatura_fis_id      );
    query.SET_VALUE ( ":irsaliye_id" , p_irsaliye_fis_id  );
    query.INSERT    ();

    STK_UPDATE_IRSALIYE_FATURALASTIRILDI_MI( p_irsaliye_fis_id , 1);

    int order_number = 0;

    QList<int> irs_str_id_list = STK_GET_FIS_SATIRI_ID_LIST( p_irsaliye_fis_id );

    for ( int i = 0 ; i < irs_str_id_list.size() ; i++ ) {

        STK_IRS_CLEAR_SATIR_STRUCT   ( STK_FIS_SATIRI );

        STK_IRS_SATIR_BILGILERINI_OKU( irs_str_id_list.at( i ), STK_FIS_SATIRI );

        STK_FATURALANAN_MIKTARI_GUNCELLE( irs_str_id_list.at( i ) , STK_FIS_SATIRI->satirdaki_urun_miktari );

        order_number               += 1024;

        FATURA_CLEAR_FIS_SATIRI_STRUCT ( FATURA_FIS_SATIRI );

        FATURA_FIS_SATIRI->doviz_id   = STK_FIS_SATIRI->doviz_id;
        FATURA_FIS_SATIRI->doviz_kodu = STK_FIS_SATIRI->doviz_kodu;
        FATURA_FIS_SATIRI->fis_id     = fatura_fis_id;

        if ( STK_FIS_SATIRI->satir_tutari > 0 ) {
            FATURA_FIS_SATIRI->fiyat_irsaliyeden_alindi = 1;
        }

        FATURA_FIS_SATIRI->modul_id                         = FATURA_FISI->modul_id;
        FATURA_FIS_SATIRI->program_id                       = FATURA_FISI->program_id;
        FATURA_FIS_SATIRI->order_number                     = order_number;
        FATURA_FIS_SATIRI->irsaliyelenen_miktar             = STK_FIS_SATIRI->satirdaki_urun_miktari;
        FATURA_FIS_SATIRI->isk_oncesi_urun_birim_fiyati     = STK_FIS_SATIRI->isk_oncesi_urun_birim_fiyati;
        FATURA_FIS_SATIRI->isk_sonrasi_urun_birim_fiyati    = STK_FIS_SATIRI->isk_sonrasi_urun_birim_fiyati;
        FATURA_FIS_SATIRI->kdv_dahil_mi                     = STK_FIS_SATIRI->kdv_dahil_mi;
        FATURA_FIS_SATIRI->kdv_orani                        = STK_FIS_SATIRI->kdv_orani;
        FATURA_FIS_SATIRI->otv_orani                        = STK_FIS_SATIRI->otv_orani;
        FATURA_FIS_SATIRI->satirdaki_urun_miktari           = STK_FIS_SATIRI->satirdaki_urun_miktari;
        FATURA_FIS_SATIRI->satir_iskonto_yuzdesi            = STK_FIS_SATIRI->iskonto_yuzdesi;
        FATURA_FIS_SATIRI->satir_iskonto_tutari             = STK_FIS_SATIRI->iskonto_tutari;
        FATURA_FIS_SATIRI->satir_kdv_dahil_tutar            = STK_FIS_SATIRI->satir_kdv_dahil_tutar;
        FATURA_FIS_SATIRI->satir_kdv_tutari                 = STK_FIS_SATIRI->satir_kdv_tutari;
        FATURA_FIS_SATIRI->satir_otv_dahil_tutar            = STK_FIS_SATIRI->satir_otv_dahil_tutar;
        FATURA_FIS_SATIRI->satir_otv_tutari                 = STK_FIS_SATIRI->satir_otv_tutari;
        FATURA_FIS_SATIRI->satir_vergi_haric_tutar          = STK_FIS_SATIRI->satir_vergi_haric_tutar;
        FATURA_FIS_SATIRI->satir_tutari                     = STK_FIS_SATIRI->satir_tutari;
        FATURA_FIS_SATIRI->temel_birim_katsayisi            = STK_FIS_SATIRI->temel_birim_katsayisi;
        FATURA_FIS_SATIRI->t_is_son_birim_fiyati            = STK_FIS_SATIRI->t_is_sonrasi_birim_fiyat;
        FATURA_FIS_SATIRI->t_is_son_satir_tutari            = STK_FIS_SATIRI->t_is_sonrasi_satir_tutari;
        FATURA_FIS_SATIRI->t_is_son_str_vergi_haric_tutar   = STK_FIS_SATIRI->t_is_sonrasi_vergi_haric_tutar;
        FATURA_FIS_SATIRI->t_is_son_satir_otv_tutari        = STK_FIS_SATIRI->t_is_sonrasi_otv_tutari;
        FATURA_FIS_SATIRI->t_is_son_satir_otv_dahil_tutar   = STK_FIS_SATIRI->t_is_sonrasi_otv_dahil_tutar;
        FATURA_FIS_SATIRI->t_is_son_satir_kdv_tutari        = STK_FIS_SATIRI->t_is_sonrasi_kdv_tutari;
        FATURA_FIS_SATIRI->t_is_son_satir_kdv_dahil_tutar   = STK_FIS_SATIRI->t_is_sonrasi_kdv_dahil_tutar;
        FATURA_FIS_SATIRI->urun_adi                         = STK_FIS_SATIRI->urun_adi;
        FATURA_FIS_SATIRI->urun_birimi                      = STK_FIS_SATIRI->urun_birimi;
        FATURA_FIS_SATIRI->urun_id                          = STK_FIS_SATIRI->urun_id;

        //irsaliye satirinda fiyat varsa ,fatura satirina aynen kaydedilir.Degistirilemez.

        int fis_satiri_id = FATURA_FIS_SATIRI_EKLE ( FATURA_FISI, FATURA_FIS_SATIRI );

        SQL_QUERY insert_query( DB );

        insert_query.PREPARE_INSERT("fat_irs_satir_baglantisi" , "kayit_id" ,
                                    "fatura_satiri_id, irsaliye_satiri_id");

        insert_query.SET_VALUE  ( ":fatura_satiri_id",      fis_satiri_id );
        insert_query.SET_VALUE  ( ":irsaliye_satiri_id",    irs_str_id_list.at( i ) );
        insert_query.INSERT     ();
    }

    int hatali_fatura_mi = 0;


    query.PREPARE_SELECT ( "fat_fatura_satirlari","satir_tutari" ,"fis_id = :fis_id" );
    query.SET_VALUE      ( ":fis_id" , fatura_fis_id );

    if ( query.SELECT() > 0 ) {
        while ( query.NEXT() EQ true )  {
            if ( query.VALUE(0).toDouble() EQ 0 ) {
                //Fatura satirlarinda tutar bilgisi yoksa fatura hatali kabul edilir.
                hatali_fatura_mi = 1;
                break;
            }
        }
    }


    FATURA_FISI->iskonto_tutari  = ROUND ( FATURA_FISI->brut_tutar - FATURA_FISI->ara_toplam );
    FATURA_FISI->iskonto_yuzdesi = ROUND ( ( ( FATURA_FISI->iskonto_tutari ) / FATURA_FISI->brut_tutar ) * 100 );


    query.PREPARE_UPDATE ( "fat_faturalar ","fis_id",
                           "iskonto_yuzdesi , "
                           "iskonto_tutari,  "
                           "hatali_fatura_mi  ",
                           "fis_id = :fis_id" );

    query.SET_VALUE ( ":iskonto_yuzdesi",               FATURA_FISI->iskonto_yuzdesi );
    query.SET_VALUE ( ":iskonto_tutari",                FATURA_FISI->iskonto_tutari  );
    query.SET_VALUE ( ":hatali_fatura_mi",              hatali_fatura_mi             );
    query.SET_VALUE ( ":fis_id",                        fatura_fis_id                       );

    query.UPDATE();

    QString cari_hesap_kodu_adi = m_ui->searchEdit_cari_hesap_kodu->GET_TEXT() + "    " + m_ui->lineEdit_cari_hesap_ismi->text();
    QString fatura_no           = "<font color = \"red\">"+ QVariant ( FATURA_FISI->fis_no ).toString() + "</font>";

    if ( hatali_fatura_mi EQ 1 ) {
        QMessageBox::warning ( this, tr("Hatalı Fatura Oluşturldu"), tr("%1 cari hesabına ait, verilen tarih aralığındaki "
                                                                        "irsaliyeler faturalaştırılırken %2 'nolu "
                                                                        "hatalı fatura oluşturuldu.").arg ( cari_hesap_kodu_adi )
                                                                                                     .arg ( fatura_no ) );
        SET_FOCUS( m_ui->searchEdit_cari_hesap_kodu );

        delete FATURA_FISI;
        delete FATURA_FIS_SATIRI;

        DB->COMMIT_TRANSACTION();
        return;
    }

    FAT_FATURA_ENT_FISLERINI_OLUSTUR( FATURA_FISI, fatura_fis_id );

    QString log_detaylari = QObject::tr("Toplu İrsaliye Faturalaştırma , Cari Hesap Kodu / Adı : ");
    log_detaylari.append ( m_ui->searchEdit_cari_hesap_kodu->GET_TEXT() + "  " + m_ui->lineEdit_cari_hesap_ismi->text()
                         + " , Fatura Tarihi : " + m_ui->adakDate_fatura_tarihi->QDATE().toString("dd MMMM yyyy")
                         +" \nİrsaliye Tarih Aralığı : " + m_ui->adakDate_irs_baslangic_tarihi->QDATE().toString("dd MMMM yyyy")
                         + " - " + m_ui->adakDate_irs_bitis_tarihi->QDATE().toString("dd MMMM yyyy") +
                         "\nŞube Kodu / Adı : " + m_ui->searchEdit_sube_kodu->GET_TEXT() + "  " + m_ui->lineEdit_sube_ismi->text());

    E9_LOG_KAYDI_EKLE ( FATURA_MODULU , LOG_FAT_TOPLU_FATURALASTIRMA , -1, log_detaylari );

    DB->COMMIT_TRANSACTION();

    delete FATURA_FISI;
    delete FATURA_FIS_SATIRI;
    delete STK_FIS;
    delete STK_FIS_SATIRI;

    accept();
}
Beispiel #7
0
void DMR_FIS_SATIRI_SIL(DMR_FIS_STRUCT *P_FIS, int p_fis_satiri_id)
{
    SQL_QUERY query ( DB );

    query.PREPARE_SELECT("dmr_fis_satirlari , dmr_fisler" , "dmr_fisler.program_id,"
                         "dmr_fisler.modul_id,base_fis_id ,fis_tarihi , "
                         "demirbas_id , toplam_tutar , satir_tutari , "
                         "dmr_fis_satirlari.fis_id , toplam_birikmis_amor_tutari,"
                         "birikmis_amortisman_tutari,base_record_id",
                         "dmr_fisler.fis_id = dmr_fis_satirlari.fis_id AND "
                         "fis_satiri_id = :fis_satiri_id");

    query.SET_VALUE(":fis_satiri_id" , p_fis_satiri_id);

    if ( query.SELECT() EQ 0 ) {
        return;
    }

    query.NEXT();

    int program_id  = query.VALUE(0).toInt();
    int modul_id    = query.VALUE(1).toInt();
    int base_fis_id = query.VALUE(2).toInt();

    if ( P_FIS->program_id NE program_id OR P_FIS->modul_id NE modul_id OR
         P_FIS->base_fis_id NE base_fis_id ) {
        return;
    }

    QDate  fis_tarihi                  = QDate::fromString(query.VALUE(3).toString() , "yyyy.MM.dd");
    int    demirbas_id                 = query.VALUE(4).toInt();
    double toplam_tutar                = query.VALUE(5).toDouble();
    double satir_tutari                = query.VALUE(6).toDouble();
    int    fis_id                      = query.VALUE(7).toInt();
    double toplam_birikmis_amor_tutari = query.VALUE(8).toDouble();
    double birikmis_amor_tutari        = query.VALUE(9).toDouble();
    int    base_record_id              = query.VALUE(10).toInt();

    query.PREPARE_SELECT ( "dmr_demirbaslar","yillik_ayrilan_amor_yuzdesi,"
                           "toplamda_ayrilan_amor_yuzdesi,"
                           "amortisman_orani,"
                           "amortisman_ayrilabilir_mi , yeniden_degerleme_yapildi ,"
                           "yeni_brkms_amortisman_tutari , demirbasin_yeni_degeri",
                           "demirbas_id = :demirbas_id" );
    query.SET_VALUE      (":demirbas_id" , demirbas_id);

    if ( query.SELECT() EQ 0 ) {
        return;
    }

    query.NEXT();

    double yillik_ayrilan_amortisman_yuzdesi   = query.VALUE(0).toDouble();
    double toplamda_ayrilan_amortisman_yuzdesi = query.VALUE(1).toDouble();
    double amortisman_orani                    = query.VALUE(2).toDouble();
    int    amortisman_ayrilabilir_mi           = query.VALUE(3).toInt();
    int    yeniden_degerleme_yapildi           = query.VALUE(4).toInt();
    double yeni_birikmis_amortisman_tutari     = query.VALUE(5).toDouble();
    double demirbasin_yeni_degeri              = query.VALUE(6).toDouble();



    if ( P_FIS->fis_turu EQ YENIDEN_DEGERLEME_FISI ) {
        yeniden_degerleme_yapildi       = 0;
        yeni_birikmis_amortisman_tutari = 0;
        demirbasin_yeni_degeri          = 0;
    }
    else {
        if ( yillik_ayrilan_amortisman_yuzdesi EQ 100 ) {
            toplamda_ayrilan_amortisman_yuzdesi -= amortisman_orani;
        }

        yillik_ayrilan_amortisman_yuzdesi -= P_FIS->dusulecek_amor_yuzdesi;
        if ( toplamda_ayrilan_amortisman_yuzdesi < 100 ) {
            amortisman_ayrilabilir_mi = 1;
        }


    }

    query.PREPARE_UPDATE ( "dmr_demirbaslar","demirbas_id","yillik_ayrilan_amor_yuzdesi ,"
                            "toplamda_ayrilan_amor_yuzdesi  , "
                            "amortisman_ayrilabilir_mi ,"
                            "yeniden_degerleme_yapildi , yeni_brkms_amortisman_tutari,"
                            "demirbasin_yeni_degeri",
                            "demirbas_id = :demirbas_id" );
    query.SET_VALUE      ( ":yillik_ayrilan_amor_yuzdesi"      , yillik_ayrilan_amortisman_yuzdesi );
    query.SET_VALUE      ( ":toplamda_ayrilan_amor_yuzdesi"    , toplamda_ayrilan_amortisman_yuzdesi );
    query.SET_VALUE      ( ":amortisman_ayrilabilir_mi"        , amortisman_ayrilabilir_mi );
    query.SET_VALUE      ( ":yeniden_degerleme_yapildi"        , yeniden_degerleme_yapildi );
    query.SET_VALUE      ( ":yeni_brkms_amortisman_tutari"     , yeni_birikmis_amortisman_tutari);
    query.SET_VALUE      ( ":demirbasin_yeni_degeri"           , demirbasin_yeni_degeri);
    query.SET_VALUE      ( ":demirbas_id"                      , demirbas_id );
    query.UPDATE();

    toplam_tutar -= satir_tutari;
    toplam_birikmis_amor_tutari -= birikmis_amor_tutari;

    P_FIS->toplam_tutar = toplam_tutar;
    P_FIS->top_birikmis_amor_tutari = toplam_birikmis_amor_tutari;

    query.PREPARE_UPDATE ( "dmr_fisler","fis_id","toplam_tutar ,toplam_birikmis_amor_tutari",
                           "fis_id = :fis_id");
    query.SET_VALUE      ( ":toplam_tutar" , P_FIS->toplam_tutar );
    query.SET_VALUE      ( ":toplam_birikmis_amor_tutari" , P_FIS->top_birikmis_amor_tutari);
    query.SET_VALUE      ( ":fis_id"       , fis_id );
    query.UPDATE();

    query.PREPARE_DELETE ( "dmr_fis_satirlari","fis_satiri_id = :fis_satiri_id" );
    query.SET_VALUE      ( ":fis_satiri_id" , p_fis_satiri_id);
    query.DELETE();

    if ( P_FIS->fis_turu EQ AMORTISMAN_AYIRMA_FISI ) {

        DMR_AMORTISMAN_TUTARINI_AZALT ( demirbas_id, MALI_YIL_ARRAY_INDIS ( fis_tarihi),satir_tutari);
    }

    if ( base_record_id EQ 0 ) {
        base_record_id = p_fis_satiri_id;
    }

    if ( P_FIS->base_fis_id EQ 0 ) {
        P_FIS->base_fis_id = fis_id;
    }

    //ISLETME_ENTEGRASYONU

    int isl_fis_id = ISL_GET_ENT_FIS_ID(P_FIS->modul_id , P_FIS->program_id , P_FIS->base_fis_id);

    if ( isl_fis_id > 0 ) {

        ISL_FIS_STRUCT * ISL_FISI = new ISL_FIS_STRUCT;

        ISL_CLEAR_FIS_STRUCT(ISL_FISI);

        ISL_FIS_BILGILERINI_OKU(ISL_FISI , isl_fis_id);

        int isl_fis_satiri_id = ISL_GET_ENT_FIS_SATIRI_ID(P_FIS->modul_id , P_FIS->program_id , base_record_id);

        ISL_FIS_SATIRI_SIL(ISL_FISI , isl_fis_satiri_id);

        delete ISL_FISI;

    }



    //MUHASEBE ENTEGRASYONU

    MUH_FIS_STRUCT * MUHASEBE_FISI = new MUH_FIS_STRUCT;

    MUH_CLEAR_FIS_STRUCT(MUHASEBE_FISI);

    MUH_FIS_BILGILERINI_OKU(MUHASEBE_FISI , P_FIS->muh_fis_id);


    QStringList MUH_ROW_ID_LIST = MUH_GET_ENT_ROW_ID_LIST(P_FIS->program_id,P_FIS->modul_id ,
                                                          base_record_id);

    for ( int i = 0 ; i < MUH_ROW_ID_LIST.size() ; i++ ) {

        int muh_fis_satiri_id = QVariant(MUH_ROW_ID_LIST.at(i)).toInt();

        MUH_FIS_SATIRINI_SIL(MUHASEBE_FISI , muh_fis_satiri_id);
    }

    delete MUHASEBE_FISI;

}
Beispiel #8
0
void DMR_FIS_GUNCELLE(DMR_FIS_STRUCT *P_FIS, int p_fis_id)
{
    SQL_QUERY query (DB);

    query.PREPARE_SELECT("dmr_fisler" , "fis_tarihi , modul_id , program_id , base_fis_id",
                         "fis_id = :fis_id");
    query.SET_VALUE(":fis_id" , p_fis_id);

    if ( query.SELECT() EQ 0 ) {
        return;
    }
    query.NEXT();

    QString fis_tarihi = query.VALUE(0).toString();
    int modul_id       = query.VALUE(1).toInt();
    int program_id     = query.VALUE(2).toInt();
    int base_fis_id    = query.VALUE(3).toInt();


    if ( P_FIS->modul_id NE modul_id OR P_FIS->program_id NE program_id
         OR P_FIS->base_fis_id NE base_fis_id ) {
        return;
    }

    if ( P_FIS->fis_turu EQ AMORTISMAN_AYIRMA_FISI ) {

        if ( fis_tarihi NE P_FIS->fis_tarihi ) {
            //fis tarihi degistiginde eski tarihten baslayarak amortisman tutari azaltilir\yeni tarihe gore tekrardan arttirilir

            int old_gun_no = MALI_YIL_ARRAY_INDIS ( QDate::fromString(fis_tarihi , "yyyy.MM.dd") );
            int gun_no     = MALI_YIL_ARRAY_INDIS ( QDate::fromString(P_FIS->fis_tarihi , "yyyy.MM.dd"));

            query.PREPARE_SELECT ( "dmr_fisler,dmr_fis_satirlari","demirbas_id,satir_tutari  ",
                                   "dmr_fisler.fis_id = dmr_fis_satirlari.fis_id AND "
                                   "dmr_fisler.fis_id = :fis_id" );
            query.SET_VALUE      ( ":fis_id" , p_fis_id );

            if ( query.SELECT() NE 0 ) {
                while ( query.NEXT() ) {
                    int demirbas_id       = query.VALUE(0).toInt();
                    double satir_tutari   = query.VALUE(1).toDouble();

                    DMR_AMORTISMAN_TUTARINI_AZALT  ( demirbas_id , old_gun_no , satir_tutari );
                    DMR_AMORTISMAN_TUTARINI_ARTTIR ( demirbas_id , gun_no     , satir_tutari );
                }
            }
        }
    }

    query.PREPARE_UPDATE("dmr_fisler" , "fis_id" , "fis_no,aciklama,fis_tarihi,"
                         "dusulecek_amortisman_yuzdesi,degerleme_orani" , "fis_id = :fis_id");
    query.SET_VALUE(":fis_no"                       , P_FIS->fis_no );
    query.SET_VALUE(":aciklama"                     , P_FIS->aciklama);
    query.SET_VALUE(":fis_tarihi"                   , P_FIS->fis_tarihi);
    query.SET_VALUE(":dusulecek_amortisman_yuzdesi" , P_FIS->dusulecek_amor_yuzdesi);
    query.SET_VALUE(":degerleme_orani"              , P_FIS->degerleme_orani);
    query.SET_VALUE(":fis_id"                       , p_fis_id);

    query.UPDATE();

    if ( P_FIS->base_fis_id EQ 0 ) {
        P_FIS->base_fis_id = p_fis_id;
    }

    //ISLETME ENTEGRASYONU

    int isl_fis_id = ISL_GET_ENT_FIS_ID(P_FIS->modul_id , P_FIS->program_id , P_FIS->base_fis_id);

    if ( isl_fis_id > 0 ) {

        ISL_FIS_STRUCT * ISL_FISI = new ISL_FIS_STRUCT;

        ISL_CLEAR_FIS_STRUCT(ISL_FISI);

        ISL_FIS_BILGILERINI_OKU(ISL_FISI , isl_fis_id);

        QString aciklama     = QObject::tr("Fiş SABİT KIYMET modülü tarafından üretilmiştir.Fiş No : %1\n").arg(QVariant(P_FIS->fis_no).toString());
        aciklama             += P_FIS->aciklama;
        ISL_FISI->aciklama   = aciklama;
        ISL_FISI->fis_tarihi = P_FIS->fis_tarihi;

        ISL_FISI_GUNCELLE(ISL_FISI , isl_fis_id);

        delete ISL_FISI;

    }


    //MUHASEBE ENTEGRASYONU

    MUH_FIS_STRUCT * MUHASEBE_FISI = new MUH_FIS_STRUCT;

    MUH_CLEAR_FIS_STRUCT(MUHASEBE_FISI);

    MUH_FIS_BILGILERINI_OKU ( MUHASEBE_FISI , P_FIS->muh_fis_id );

    if ( P_FIS->modul_id EQ DEMIRBAS_MODULU ) {
        QString aciklama        = QObject::tr("Fiş SABİT KIYMET modülü tarafından üretilmiştir.Fiş No : %1\n").arg(QVariant(P_FIS->fis_no).toString());
        aciklama               += P_FIS->aciklama;
        MUHASEBE_FISI->aciklama = aciklama;
    }
    else {
        MUHASEBE_FISI->aciklama = P_FIS->aciklama;
    }
    MUHASEBE_FISI->fis_tarihi   = P_FIS->fis_tarihi;

    MUH_FISI_GUNCELLE ( MUHASEBE_FISI , P_FIS->muh_fis_id );

    delete MUHASEBE_FISI;

}
Beispiel #9
0
int BNK_DEFTER_FIS_SATIRINI_GUNCELLE( BNK_DEFTER_FIS_STRUCT * P_FIS, BNK_DEFTER_FIS_SATIRI_STRUCT * P_FIS_SATIRI,
                                      int p_fis_satiri_id , ADAK_SQL * P_GELEN_DB)
{
    ADAK_SQL * USE_DB;

    if ( P_GELEN_DB EQ NULL ) {
        USE_DB = DB;
    }
    else {
        USE_DB = P_GELEN_DB;
    }

    SQL_QUERY query ( USE_DB );
    query.PREPARE_SELECT ( "bnk_defter_fisler","modul_id, program_id, toplam_hesaba_giren, "
                           "toplam_hesaptan_cikan, base_fis_id                ",
                           "fis_id = :fis_id                            " );
    query.SET_VALUE      ( ":fis_id", P_FIS_SATIRI->fis_id );

    if ( query.SELECT() EQ 0 ) {
        return 0;
    }
    query.NEXT();

    int         modul_id                     = query.VALUE ( 0 ).toInt();
    int         program_id                   = query.VALUE ( 1 ).toInt();
    double      old_toplam_hesaptan_cikan    = query.VALUE ( 2 ).toDouble();
    double      old_toplam_hesaba_giren      = query.VALUE ( 3 ).toDouble();
    int         base_fis_id                  = query.VALUE ( 4 ).toInt();

    if ( P_FIS->modul_id NE modul_id OR P_FIS->program_id NE program_id OR P_FIS->base_fis_id NE base_fis_id ) {
        return 0;
    }

    query.PREPARE_SELECT ( "bnk_defter_fis_satirlari",
                           "hesaba_giren, hesaptan_cikan,  "
                           "hesap_turu, hesap_id, kaydedilecek_sirket",
                           "fis_satiri_id = :fis_satiri_id" );
    query.SET_VALUE      ( ":fis_satiri_id", p_fis_satiri_id );

    if( query.SELECT() EQ 0 ) {
        return 0;
    }
    query.NEXT();

    double      old_hesaba_giren              = query.VALUE ( 0 ).toDouble();
    double      old_hesaptan_cikan            = query.VALUE ( 1 ).toDouble();
    int         old_hesap_turu                = query.VALUE ( 2 ).toInt();
    int         old_hesap_id                  = query.VALUE ( 3 ).toInt();
    int         old_entegre_olsun_mu          = query.VALUE ( 4 ).toInt();

    int new_satir_id = 0;

    if ( old_hesaba_giren       NE P_FIS_SATIRI->hesaba_giren   OR
         old_hesaptan_cikan     NE P_FIS_SATIRI->hesaptan_cikan OR
         old_hesap_turu         NE P_FIS_SATIRI->hesap_turu     OR
         old_hesap_id           NE P_FIS_SATIRI->hesap_id       OR
         old_entegre_olsun_mu   NE P_FIS_SATIRI->kaydedilecek_sirket ) {

        BNK_DEFTER_FIS_STRUCT * DEF_FIS = new BNK_DEFTER_FIS_STRUCT;

        DEF_FIS->program_id         = P_FIS->program_id;
        DEF_FIS->modul_id           = P_FIS->modul_id;
        DEF_FIS->base_fis_id        = P_FIS->base_fis_id;
        DEF_FIS->hesap_no_id        = P_FIS->hesap_no_id;
        DEF_FIS->kaydedilecek_sirket         = P_FIS_SATIRI->kaydedilecek_sirket;
        DEF_FIS->muh_fis_id         = P_FIS->muh_fis_id;
        DEF_FIS->base_fis_turu      = P_FIS->base_fis_turu;

        QStringList def_row_list = GET_BNK_DEFTER_ROW_ID_LIST( P_FIS->program_id, P_FIS->modul_id, P_FIS_SATIRI->base_record_id ,USE_DB);

        if ( def_row_list.count() > 0 ) {

            for ( int i =0; i < def_row_list.count(); i++ ) {
                 BNK_DEFTER_FIS_SATIRI_SIL( DEF_FIS, QVariant ( def_row_list.at( i ) ).toInt(), USE_DB );
                 new_satir_id = BNK_DEFTER_FIS_SATIRI_EKLE( P_FIS, P_FIS_SATIRI ,0,true,USE_DB);
            }
        }



        delete DEF_FIS;

        // bakiyeler guncelleniyor
        P_FIS->toplam_hesaba_giren   = ROUND ( old_toplam_hesaba_giren  +  P_FIS_SATIRI->hesaba_giren   - old_hesaba_giren   );
        P_FIS->toplam_hesaptan_cikan = ROUND ( old_toplam_hesaptan_cikan+  P_FIS_SATIRI->hesaptan_cikan - old_hesaptan_cikan );

        query.PREPARE_UPDATE ( "bnk_defter_fisler","fis_id","toplam_hesaba_giren ,     "
                               "toplam_hesaptan_cikan  ","fis_id = :fis_id");

        query.SET_VALUE      ( ":toplam_hesaba_giren"   , P_FIS->toplam_hesaba_giren    );
        query.SET_VALUE      ( ":toplam_hesaptan_cikan" , P_FIS->toplam_hesaptan_cikan  );
        query.SET_VALUE      ( ":fis_id"                , P_FIS_SATIRI->fis_id          );
        query.UPDATE();

    }
    else { // sadece aciklama degismis

        if ( P_FIS->fis_turu NE ENUM_BANKA_ACILIS_FISI ) {
            int muh_fis_id  = MUH_GET_ENT_FIS_ID ( P_FIS->program_id, P_FIS->modul_id, P_FIS->base_fis_id ,USE_DB);
            if ( muh_fis_id > 0) {
                MUH_ENTEGRASYON_FIS_SATIRLARINI_GUNCELLE( P_FIS_SATIRI->aciklama, P_FIS->program_id, P_FIS->modul_id, muh_fis_id,
                                                          P_FIS->base_fis_id, P_FIS_SATIRI->base_record_id ,USE_DB);
            }
        }
        query.PREPARE_UPDATE ( "bnk_defter_fis_satirlari","fis_satiri_id","aciklama","fis_satiri_id     = :fis_satiri_id " );

        query.SET_VALUE     ( ":aciklama"                , P_FIS_SATIRI->aciklama           );
        query.SET_VALUE     ( ":fis_satiri_id"           , p_fis_satiri_id                  );
        query.UPDATE();
    }

    return new_satir_id;
}
Beispiel #10
0
int BNK_DEFTER_FIS_SATIRI_EKLE ( BNK_DEFTER_FIS_STRUCT * P_FIS, BNK_DEFTER_FIS_SATIRI_STRUCT * P_FIS_SATIRI, int p_fis_satiri_id , bool base_fis_satiri_eklenecek ,ADAK_SQL * P_GELEN_DB)
{
    ADAK_SQL * USE_DB;

    if ( P_GELEN_DB EQ NULL ) {
        USE_DB = DB;
    }
    else {
        USE_DB = P_GELEN_DB;
    }

    SQL_QUERY query      ( USE_DB );

    query.PREPARE_SELECT ( "bnk_defter_fisler ","toplam_hesaba_giren,toplam_hesaptan_cikan,   "
                           "fis_tarihi, last_order_number, base_fis_id,         "
                           "modul_id, program_id, para_birim_id                 ",
                           "fis_id = :fis_id       " );

    query.SET_VALUE      ( ":fis_id" , P_FIS_SATIRI->fis_id );

    if ( query.SELECT() EQ 0 ) {
        return 0;
    }
    query.NEXT();

    double    toplam_hesaba_giren       = query.VALUE ( 0 ).toDouble();
    double    toplam_hesaptan_cikan     = query.VALUE ( 1 ).toDouble();
    QString   tarih                     = query.VALUE ( 2 ).toString();
    int       last_order_number         = query.VALUE ( 3 ).toInt();
    int       base_fis_id               = query.VALUE ( 4 ).toInt();
    int       modul_id                  = query.VALUE ( 5 ).toInt();
    int       program_id                = query.VALUE ( 6 ).toInt();
    int       para_birim_id             = query.VALUE ( 7 ).toInt();
    int       gun_no                    = MALI_YIL_ARRAY_INDIS ( QDate::fromString( tarih, "yyyy.MM.dd" ) );


    if ( P_FIS->modul_id NE modul_id OR P_FIS->program_id NE program_id OR P_FIS->base_fis_id NE base_fis_id ) {
        return 0;
    }

    if ( P_FIS_SATIRI->order_number EQ 0 ) {
        P_FIS_SATIRI->order_number = last_order_number + 1024;
    }


    double hesaba_giren     = 0.00;
    double hesaptan_cikan   = 0.00;


    hesaba_giren    = P_FIS_SATIRI->hesaba_giren;
    hesaptan_cikan  = P_FIS_SATIRI->hesaptan_cikan;

    int satir_id = p_fis_satiri_id;

    if ( base_fis_satiri_eklenecek EQ true ) {

        query.PREPARE_INSERT ( "bnk_defter_fis_satirlari","fis_satiri_id" ,
                               "fis_id, aciklama,                         "
                               "hesaba_giren,hesaptan_cikan,              "
                               "base_record_id,                           "
                               "order_number, hesap_turu, hesap_id,       "
                               "program_id, modul_id,                     "
                               "kaydedilecek_sirket                       ");

        query.SET_VALUE ( ":fis_id"                  , P_FIS_SATIRI->fis_id                       );
        query.SET_VALUE ( ":aciklama"                , P_FIS_SATIRI->aciklama                     );
        query.SET_VALUE ( ":hesaba_giren"            , ROUND( hesaba_giren )                      );
        query.SET_VALUE ( ":hesaptan_cikan"          , ROUND( hesaptan_cikan )                    );
        query.SET_VALUE ( ":base_record_id"          , P_FIS_SATIRI->base_record_id               );
        query.SET_VALUE ( ":order_number"            , P_FIS_SATIRI->order_number                 );
        query.SET_VALUE ( ":hesap_turu"              , P_FIS_SATIRI->hesap_turu                   );
        query.SET_VALUE ( ":hesap_id"                , P_FIS_SATIRI->hesap_id                     );
        query.SET_VALUE ( ":program_id"              , P_FIS_SATIRI->program_id                   );
        query.SET_VALUE ( ":modul_id"                , P_FIS_SATIRI->modul_id                     );
        query.SET_VALUE ( ":kaydedilecek_sirket"     , P_FIS_SATIRI->kaydedilecek_sirket          );

        satir_id = query.INSERT();
    }

    if ( P_FIS->modul_id EQ BANKA_MODULU ) {
        if ( base_fis_id EQ 0 ) {
            base_fis_id = P_FIS_SATIRI->fis_id;
        }
        if ( P_FIS_SATIRI->base_record_id EQ 0 ) {
            P_FIS_SATIRI->base_record_id = satir_id;
        }
    }

    if ( P_FIS->fis_turu EQ ENUM_BANKA_ACILIS_FISI ) {
        gun_no = 0;
    }

    int hesap_no_id = P_FIS->hesap_no_id;

    if ( P_FIS->fis_turu EQ ENUM_BANKA_VIRMAN_FISI ) {
        hesap_no_id = P_FIS_SATIRI->hesap_id;
    }


    switch ( P_FIS_SATIRI->hesap_turu ) {

        case ENUM_BNK_KREDI_KARTI_HESABI:
                BANKA_HESAP_BAKIYELERINI_ARTTIR ( gun_no, hesap_no_id, hesaba_giren, hesaptan_cikan,
                                                  ENUM_BNK_KREDI_KARTI_HESABI, P_FIS->kaydedilecek_sirket ,USE_DB);
            break;
        case ENUM_BNK_POS_HESABI:
                BANKA_HESAP_BAKIYELERINI_ARTTIR ( gun_no, hesap_no_id, hesaba_giren, hesaptan_cikan,
                                                  ENUM_BNK_POS_HESABI, P_FIS->kaydedilecek_sirket ,USE_DB);

           break;
        case ENUM_BNK_BANKA_HESABI:
                BANKA_HESAP_BAKIYELERINI_ARTTIR ( gun_no, hesap_no_id, hesaba_giren, hesaptan_cikan,
                                                  ENUM_BNK_BANKA_HESABI , P_FIS->kaydedilecek_sirket ,USE_DB);
           break;
        default:
            break;
    }

    // Muhasebeye temel para birimi cinsinden gitmesi gerekir...
    if (  para_birim_id NE DVZ_GET_TEMEL_PARA_BIRIMI_ID() ) {

        if ( P_FIS_SATIRI->hesaba_giren > 0.00 ) {
            hesaba_giren    = ROUND( P_FIS_SATIRI->hesaba_giren * P_FIS_SATIRI->doviz_kuru );
            hesaptan_cikan  = 0.00;
        }
        else {
            hesaba_giren    = 0.00;
            hesaptan_cikan  = ROUND( P_FIS_SATIRI->hesaptan_cikan * P_FIS_SATIRI->doviz_kuru );
        }

    }
    else {
        hesaba_giren    = P_FIS_SATIRI->hesaba_giren;
        hesaptan_cikan  = P_FIS_SATIRI->hesaptan_cikan;
    }

    if ( P_FIS->fis_turu NE ENUM_BANKA_ACILIS_FISI ) {

        // muhasebe kodu tespit ediliyor
        int muh_id = 0;
        switch ( P_FIS_SATIRI->hesap_turu ) {

            case    ENUM_BNK_BANKA_HESABI :
                query.PREPARE_SELECT ( "bnk_hesaplar","muh_hesap_id","hesap_no_id = :hesap_no_id");
                query.SET_VALUE      ( ":hesap_no_id" , P_FIS_SATIRI->hesap_id );
                if ( query.SELECT() EQ  0 ) {
                    break;
                }
                query.NEXT();
                muh_id = query.VALUE(0).toInt();
                break;
            case    ENUM_BNK_POS_HESABI :
                query.PREPARE_SELECT ( "bnk_hesabin_poslari","muh_hesap_id","pos_id = :pos_id AND hesap_no_id = :hesap_no_id");
                query.SET_VALUE      ( ":pos_id"      , P_FIS_SATIRI->hesap_id );
                query.SET_VALUE      ( ":hesap_no_id" , P_FIS->hesap_no_id );
                if ( query.SELECT() EQ 0 ) {
                    break;
                }
                query.NEXT();
                muh_id = query.VALUE(0).toInt();
                break;
            case    ENUM_BNK_KREDI_KARTI_HESABI :
                query.PREPARE_SELECT ( "bnk_hesabin_kredi_kartlari","muh_hesap_id","kredi_karti_id = :kredi_karti_id AND hesap_no_id = :hesap_no_id ");
                query.SET_VALUE      ( ":kredi_karti_id"  , P_FIS_SATIRI->hesap_id );
                query.SET_VALUE      ( ":hesap_no_id"     , P_FIS->hesap_no_id );
                if ( query.SELECT() EQ  0 ) {
                    break;
                }
                query.NEXT();
                muh_id = query.VALUE(0).toInt();
                break;

            case ENUM_BNK_KASA_HESABI:
                muh_id  = SUBE_GET_UNITE_MUH_KASA_HESABI_ID();
                break;

            case ENUM_BNK_MUHASEBE_HESABI:

                muh_id = P_FIS_SATIRI->hesap_id;
                break;
            case    ENUM_BNK_POS_KOMISYON_HESABI :
                query.PREPARE_SELECT ( "bnk_hesabin_poslari ","kom_hesap_id","pos_id = :pos_id AND hesap_no_id = :hesap_no_id");
                query.SET_VALUE      ( ":pos_id"      , P_FIS_SATIRI->hesap_id );
                query.SET_VALUE      ( ":hesap_no_id" , P_FIS->hesap_no_id );
                if ( query.SELECT() EQ 0 ) {
                    break;
                }
                query.NEXT();
                muh_id = query.VALUE(0).toInt();
                break;

            default :
                break;
        }


        double borc_tutari      = 0.00;
        double alacak_tutari    = 0.00;
        alacak_tutari           = hesaptan_cikan;
        borc_tutari             = hesaba_giren;

        MUH_FIS_STRUCT         * MUH_FIS          = new MUH_FIS_STRUCT;
        MUH_FIS_SATIRI_STRUCT  * MUH_FIS_SATIRI   = new MUH_FIS_SATIRI_STRUCT;

        // [ 1 ]

        if ( P_FIS->odm_emr_hesabi_etkilenecek_mi EQ 1 ) {
            if ( P_FIS_SATIRI->hesap_turu EQ ENUM_BNK_BANKA_HESABI ) {


                if ( alacak_tutari > 0.00 ) { // bankadan para cikiyor

                    // [ 2 ] Odeme emirleri ne alacak sonra  borc

                    SQL_QUERY f_query( DB );

                    int odeme_emirleri_hesap_id = 0;

                    f_query.PREPARE_SELECT( "bnk_hesaplar","odeme_emirleri_hesap_id","hesap_no_id = :hesap_no_id" );
                    f_query.SET_VALUE     ( ":hesap_no_id", P_FIS->hesap_no_id );

                    if ( f_query.SELECT() NE 0 ) {

                        f_query.NEXT();

                        odeme_emirleri_hesap_id = f_query.VALUE( 0 ).toInt();

                        MUH_CLEAR_FIS_STRUCT        ( MUH_FIS );
                        MUH_CLEAR_FIS_SATIRI_STRUCT ( MUH_FIS_SATIRI );


                        MUH_FIS_BILGILERINI_OKU ( MUH_FIS, P_FIS->muh_fis_id ,USE_DB);

                        MUH_FIS_SATIRI->aciklama             = P_FIS_SATIRI->aciklama;
                        MUH_FIS_SATIRI->borc_tutari          = borc_tutari;
                        MUH_FIS_SATIRI->alacak_tutari        = alacak_tutari;
                        MUH_FIS_SATIRI->fis_id               = P_FIS->muh_fis_id;
                        MUH_FIS_SATIRI->hesap_id             = odeme_emirleri_hesap_id;
                        MUH_FIS_SATIRI->base_record_id       = P_FIS_SATIRI->base_record_id;
                        MUH_FIS_SATIRI->program_id           = P_FIS_SATIRI->program_id;
                        MUH_FIS_SATIRI->modul_id             = P_FIS_SATIRI->modul_id;
                        MUH_FIS_SATIRI->kaydedilecek_sirket           = P_FIS_SATIRI->kaydedilecek_sirket ;

                        // hesaba giren
                        MUH_FIS_SATIRI_EKLE ( MUH_FIS, MUH_FIS_SATIRI ,USE_DB);

                        MUH_FIS_SATIRI->borc_tutari          = alacak_tutari;
                        MUH_FIS_SATIRI->alacak_tutari        = borc_tutari;
                        // hesaptan cikan
                        MUH_FIS_SATIRI_EKLE ( MUH_FIS, MUH_FIS_SATIRI ,USE_DB);

                    }
                    // [ 2 ]
                }
            }
        }
        // [ 1 ]

        //Muhasebe modulune fis_satiri uretiliyor

        MUH_CLEAR_FIS_STRUCT        ( MUH_FIS );
        MUH_CLEAR_FIS_SATIRI_STRUCT ( MUH_FIS_SATIRI );

        MUH_FIS_BILGILERINI_OKU ( MUH_FIS, P_FIS->muh_fis_id ,USE_DB);

        MUH_FIS_SATIRI->aciklama             = P_FIS_SATIRI->aciklama;
        MUH_FIS_SATIRI->borc_tutari          = borc_tutari;
        MUH_FIS_SATIRI->alacak_tutari        = alacak_tutari;
        MUH_FIS_SATIRI->fis_id               = P_FIS->muh_fis_id;
        MUH_FIS_SATIRI->hesap_id             = muh_id;
        MUH_FIS_SATIRI->base_record_id       = P_FIS_SATIRI->base_record_id;
        MUH_FIS_SATIRI->program_id           = P_FIS_SATIRI->program_id;
        MUH_FIS_SATIRI->modul_id             = P_FIS_SATIRI->modul_id;
        MUH_FIS_SATIRI->kaydedilecek_sirket     = P_FIS_SATIRI->kaydedilecek_sirket;

        MUH_FIS_SATIRI_EKLE ( MUH_FIS, MUH_FIS_SATIRI ,USE_DB);

        delete MUH_FIS;
        delete MUH_FIS_SATIRI;

    }

    if ( base_fis_satiri_eklenecek EQ true ) {

        toplam_hesaba_giren   = ROUND ( toplam_hesaba_giren   + P_FIS_SATIRI->hesaba_giren  );
        toplam_hesaptan_cikan = ROUND ( toplam_hesaptan_cikan + hesaptan_cikan );
        // toplam degerler guncelleniyor
        query.PREPARE_UPDATE (  "bnk_defter_fisler","fis_id","toplam_hesaba_giren, toplam_hesaptan_cikan ",
                                "fis_id = :fis_id" );

        query.SET_VALUE( ":toplam_hesaba_giren"   , toplam_hesaba_giren   );
        query.SET_VALUE( ":toplam_hesaptan_cikan" , toplam_hesaptan_cikan );
        query.SET_VALUE( ":fis_id"                , P_FIS_SATIRI->fis_id  );
        query.UPDATE   ();

        P_FIS->toplam_hesaba_giren   = toplam_hesaba_giren;
        P_FIS->toplam_hesaptan_cikan = toplam_hesaptan_cikan;
    }
    return satir_id;

}
Beispiel #11
0
void BNK_DEFTER_FISI_GUNCELLE ( BNK_DEFTER_FIS_STRUCT * P_FIS, int p_fis_id )
{
    SQL_QUERY query ( DB );
    query.PREPARE_SELECT ( "bnk_defter_fisler","modul_id, program_id, hesap_no_id, base_fis_id",
                           "fis_id = :fis_id " );
    query.SET_VALUE      ( ":fis_id", p_fis_id );

    if ( query.SELECT() EQ 0 ) {
        return;
    }
    query.NEXT();

    int         modul_id     = query.VALUE( 0 ).toInt();
    int         program_id   = query.VALUE( 1 ).toInt();
    int         hesap_no_id  = query.VALUE( 2 ).toInt();
    int         base_fis_id  = query.VALUE( 3 ).toInt();

    int         banka_para_birimi_id  = 0;
    QString     banka_para_birimi_kodu;

    if ( P_FIS->modul_id NE modul_id OR P_FIS->program_id NE program_id OR P_FIS->base_fis_id NE base_fis_id ) {
        return;
    }

    query.PREPARE_SELECT ( "bnk_hesaplar","doviz_id","hesap_no_id = :hesap_no_id" );
    query.SET_VALUE      ( ":hesap_no_id", hesap_no_id );

    if ( query.SELECT() > 0 ) {
        query.NEXT();
        banka_para_birimi_id   = query.VALUE ( 0 ).toInt();
        banka_para_birimi_kodu = DVZ_GET_DOVIZ_KODU ( banka_para_birimi_id );
    }

    query.PREPARE_SELECT( "bnk_defter_fisler","hesap_no_id , kaydedilecek_sirket, fis_tarihi","fis_id = :fis_id" );
    query.SET_VALUE     ( ":fis_id", p_fis_id );

    if ( query.SELECT() EQ 0 ) {
        return;
    }
    query.NEXT();

    int old_hesap_no_id         = query.VALUE( 0 ).toInt();
    int old_entegre_olsun_mu    = query.VALUE( 1 ).toInt();
    QString old_fis_tarihi      = query.VALUE( 2 ).toString();


    if ( old_entegre_olsun_mu NE P_FIS->kaydedilecek_sirket OR
         old_hesap_no_id      NE P_FIS->hesap_no_id OR
         old_fis_tarihi       NE P_FIS->fis_tarihi )
    {

        if ( P_FIS->fis_turu NE ENUM_BANKA_ACILIS_FISI ) {


            BNK_DEFTER_FIS_STRUCT        * DEF_FIS        = new BNK_DEFTER_FIS_STRUCT;
            BNK_DEFTER_FIS_SATIRI_STRUCT * DEF_FIS_SATIRI = new BNK_DEFTER_FIS_SATIRI_STRUCT;

            CLEAR_BNK_DEFTER_FIS_SATIRI_STRUCT( DEF_FIS_SATIRI );
            CLEAR_BNK_DEFTER_FIS_STRUCT       ( DEF_FIS );

            BNK_DEFTER_FIS_BILGILERINI_OKU( DEF_FIS, p_fis_id );

            query.PREPARE_UPDATE( "bnk_defter_fisler","fis_id","fis_tarihi,"
                                  "hesap_no_id,                      "
                                  "kaydedilecek_sirket, odm_emr_hesabi_etkilenecek_mi",
                                  "fis_id = :fis_id " );

            query.SET_VALUE     ( ":fis_tarihi",                        P_FIS->fis_tarihi                       );
            query.SET_VALUE     ( ":hesap_no_id",                       P_FIS->hesap_no_id                      );
            query.SET_VALUE     ( ":kaydedilecek_sirket",                        P_FIS->kaydedilecek_sirket                       );
            query.SET_VALUE     ( ":odm_emr_hesabi_etkilenecek_mi",     P_FIS->odm_emr_hesabi_etkilenecek_mi    );
            query.SET_VALUE     ( ":fis_id",                            p_fis_id                                );
            query.UPDATE();

            MUH_FIS_STRUCT * MUH_FIS    = new MUH_FIS_STRUCT;
            MUH_CLEAR_FIS_STRUCT( MUH_FIS );

            MUH_FIS_BILGILERINI_OKU( MUH_FIS, P_FIS->muh_fis_id );

            MUH_FIS->fis_tarihi         = P_FIS->fis_tarihi;
            MUH_FIS->kaydedilecek_sirket         = P_FIS->kaydedilecek_sirket;

            if ( P_FIS->modul_id EQ BANKA_MODULU ) {
                MUH_FIS->aciklama           = QString ( QObject::tr ( "Fiş BANKA MODÜLÜ ( %2 ) tarafından üretilmiştir. Fiş No = %1\n" ) ).arg( QVariant ( P_FIS->fis_no ).toInt() )
                                              .arg(BNK_GET_FIS_TURLERI_STRING(P_FIS->fis_turu)) + P_FIS->aciklama;
            }
            else {
                MUH_FIS->aciklama = P_FIS->aciklama;
            }

            MUH_FISI_GUNCELLE( MUH_FIS, P_FIS->muh_fis_id );


            query.PREPARE_SELECT( "bnk_defter_fis_satirlari","fis_satiri_id","fis_id = :fis_id ");
            query.SET_VALUE     ( ":fis_id", p_fis_id );

            int def_fis_satir_id    = 0;
            if ( query.SELECT() NE 0 ) {

                while ( query.NEXT() EQ true ) {
                    def_fis_satir_id = query.VALUE( 0 ).toInt();
                    BNK_DEFTER_FIS_SATIR_BILGILERINI_OKU( DEF_FIS_SATIRI, def_fis_satir_id );
                    BNK_DEFTER_FIS_SATIRI_SIL ( DEF_FIS, def_fis_satir_id );

                    DEF_FIS_SATIRI->kaydedilecek_sirket    = P_FIS->kaydedilecek_sirket;
                    if ( DEF_FIS_SATIRI->hesap_turu EQ ENUM_BNK_BANKA_HESABI ) {
                        DEF_FIS_SATIRI->hesap_id = P_FIS->hesap_no_id;
                    }

                    BNK_DEFTER_FIS_SATIRI_EKLE( P_FIS, DEF_FIS_SATIRI );
                }
            }
            delete DEF_FIS_SATIRI;
        }
        else {

        }

        query.PREPARE_UPDATE("bnk_defter_fisler","fis_id","aciklama,                    "
                             "hesap_no_id   ,   "
                             "fis_tarihi     ,        "
                             "kaydedilecek_sirket          ,            "
                             "odm_emr_hesabi_etkilenecek_mi  ",
                             "fis_id              = :fis_id                       ");

        query.SET_VALUE( ":aciklama"                        , P_FIS->aciklama                   );
        query.SET_VALUE( ":hesap_no_id"                     , P_FIS->hesap_no_id                );
        query.SET_VALUE( ":fis_tarihi"                      , P_FIS->fis_tarihi                 );
        query.SET_VALUE( ":kaydedilecek_sirket"                , P_FIS->kaydedilecek_sirket           );
        query.SET_VALUE( ":odm_emr_hesabi_etkilenecek_mi" , P_FIS->odm_emr_hesabi_etkilenecek_mi);
        query.SET_VALUE( ":fis_id"                          , p_fis_id                          );

        query.UPDATE();

    }
    else {
        // sadece aciklama degismistir

        query.PREPARE_UPDATE("bnk_defter_fisler","fis_id",
                             "aciklama",
                             "fis_id = :fis_id" );

        query.SET_VALUE( ":aciklama"                        , P_FIS->aciklama  );
        query.SET_VALUE( ":fis_id"                          , p_fis_id         );


        MUH_FIS_STRUCT         * MUH_FIS          = new MUH_FIS_STRUCT;
        MUH_FIS_SATIRI_STRUCT  * MUH_FIS_SATIRI   = new MUH_FIS_SATIRI_STRUCT;

        MUH_CLEAR_FIS_STRUCT        ( MUH_FIS );
        MUH_CLEAR_FIS_SATIRI_STRUCT ( MUH_FIS_SATIRI );

        MUH_FIS_BILGILERINI_OKU ( MUH_FIS, P_FIS->muh_fis_id );

        if ( P_FIS->modul_id EQ BANKA_MODULU ) {
            MUH_FIS->aciklama           = QString ( QObject::tr ( " Fiş BANKA MODÜLÜ ( %2 ) tarafından üretilmiştir. Fiş No = %1\n" ) ).arg( QVariant ( P_FIS->fis_no ).toInt() ).arg(BNK_GET_FIS_TURLERI_STRING(P_FIS->fis_turu));
            MUH_FIS->aciklama.append( P_FIS->aciklama );
        }
        else {
            MUH_FIS->aciklama = P_FIS->aciklama;
        }

        MUH_FISI_GUNCELLE( MUH_FIS, P_FIS->muh_fis_id );

        if ( P_FIS->aciklama.size() > 512 ) {
            P_FIS->aciklama.resize(512);
        }

        query.PREPARE_UPDATE("bnk_defter_fisler","fis_id","aciklama","fis_id = :fis_id  ");

        query.SET_VALUE( ":aciklama"                , P_FIS->aciklama                   );
        query.SET_VALUE( ":fis_id"                  , p_fis_id                          );

        query.UPDATE();

    }

}
Beispiel #12
0
void BNK_DEFTER_FIS_SATIRI_SIL ( BNK_DEFTER_FIS_STRUCT * P_FIS, int p_fis_satiri_id  ,ADAK_SQL * P_GELEN_DB)
{
    ADAK_SQL * USE_DB ;

    if ( P_GELEN_DB EQ NULL ) {
        USE_DB = DB;
    }
    else {
        USE_DB = P_GELEN_DB;
    }

    SQL_QUERY query ( USE_DB );
    query.PREPARE_SELECT ( "bnk_defter_fisler, bnk_defter_fis_satirlari",
                           "bnk_defter_fisler.fis_id, fis_tarihi, hesaba_giren, hesaptan_cikan,             "
                           "toplam_hesaba_giren, toplam_hesaptan_cikan, bnk_defter_fis_satirlari.modul_id,  "
                           "bnk_defter_fis_satirlari.program_id, hesap_turu,                                "
                           "base_fis_id , fis_turu , bnk_defter_fis_satirlari.hesap_id,base_record_id",
                           "bnk_defter_fisler.fis_id = bnk_defter_fis_satirlari.fis_id                      "
                           "AND fis_satiri_id  = :fis_satiri_id                                             " );

    query.SET_VALUE      ( ":fis_satiri_id", p_fis_satiri_id );

    if ( query.SELECT() EQ 0 ) {
        return;
    }
    query.NEXT();

    int     fis_id                          =  query.VALUE( 0  ).toInt();
    QString fis_tarihi                      =  query.VALUE( 1  ).toString();
    double  hesaba_giren                    =  query.VALUE( 2  ).toDouble();
    double  hesaptan_cikan                  =  query.VALUE( 3  ).toDouble();
    double  toplam_hesaba_giren             =  query.VALUE( 4  ).toDouble();
    double  toplam_hesaptan_cikan           =  query.VALUE( 5  ).toDouble();
    int     modul_id                        =  query.VALUE( 6  ).toInt();
    int     program_id                      =  query.VALUE( 7  ).toInt();
    int     hesap_turu                      =  query.VALUE( 8  ).toInt();
    int     base_fis_id                     =  query.VALUE( 9  ).toInt();
    int     fis_turu                        =  query.VALUE( 10 ).toInt();
    int     hesap_id                        =  query.VALUE( 11 ).toInt();
    int     base_record_id                  =  query.VALUE(12).toInt();

    if ( modul_id NE P_FIS->modul_id OR program_id NE P_FIS->program_id OR P_FIS->base_fis_id NE base_fis_id) {
        return;
    }
    int gun_no =  MALI_YIL_ARRAY_INDIS ( QDate::fromString ( fis_tarihi, "yyyy.MM.dd" ) );

    if ( fis_turu EQ ENUM_BANKA_ACILIS_FISI ) {
        gun_no = 0;
    }

    int hesap_no_id = P_FIS->hesap_no_id;
    if ( P_FIS->fis_turu EQ ENUM_BANKA_VIRMAN_FISI ) {
        hesap_no_id = hesap_id;
    }
    // bakiyeler azaltma islemi yapiliyor
    switch ( hesap_turu ) {
        case ENUM_BNK_KREDI_KARTI_HESABI:
                BANKA_HESAP_BAKIYELERINI_AZALT ( gun_no, hesap_no_id ,hesaba_giren, hesaptan_cikan,
                                                 ENUM_BNK_KREDI_KARTI_HESABI, P_FIS->kaydedilecek_sirket ,USE_DB);
            break;
        case ENUM_BNK_POS_HESABI :
                BANKA_HESAP_BAKIYELERINI_AZALT ( gun_no, hesap_no_id, hesaba_giren, hesaptan_cikan,
                                             ENUM_BNK_POS_HESABI, P_FIS->kaydedilecek_sirket ,USE_DB);
           break;
        case ENUM_BNK_BANKA_HESABI:
                BANKA_HESAP_BAKIYELERINI_AZALT ( gun_no, hesap_no_id, hesaba_giren, hesaptan_cikan,
                                             ENUM_BNK_BANKA_HESABI, P_FIS->kaydedilecek_sirket ,USE_DB) ;
           break;
    default: break;
    }

    if ( fis_turu NE ENUM_BANKA_ACILIS_FISI ) {

        switch ( hesap_turu )
        {
        case ENUM_BNK_BANKA_HESABI:
        case ENUM_BNK_KREDI_KARTI_HESABI:
        case ENUM_BNK_POS_HESABI:
            {    
                 QStringList muh_row_list = MUH_GET_FISE_GORE_ENT_ROW_ID_LIST( P_FIS->program_id, P_FIS->modul_id, base_record_id ,P_FIS->muh_fis_id,USE_DB);

                 if ( muh_row_list.count() > 0 ) {

                     MUH_FIS_STRUCT * MUH_FIS = new MUH_FIS_STRUCT;
                     MUH_FIS->modul_id         = P_FIS->modul_id;
                     MUH_FIS->program_id       = P_FIS->program_id;
                     MUH_FIS->base_fis_id      = P_FIS->base_fis_id;
                     MUH_FIS->kaydedilecek_sirket       = P_FIS->kaydedilecek_sirket;

                     for ( int i = 0; i< muh_row_list.count(); i++ ) {
                             MUH_FIS_SATIRINI_SIL( MUH_FIS, QVariant ( muh_row_list.at( i ) ).toInt() ,USE_DB);
                     }

                     delete MUH_FIS;
                 }
            }
            break;
         }
    }

    query.PREPARE_DELETE ( "bnk_defter_fis_satirlari","fis_satiri_id = :fis_satiri_id" );
    query.SET_VALUE      ( ":fis_satiri_id", p_fis_satiri_id );
    query.DELETE();

    P_FIS->toplam_hesaba_giren   = ROUND ( toplam_hesaba_giren   - hesaba_giren  );
    P_FIS->toplam_hesaptan_cikan = ROUND ( toplam_hesaptan_cikan - hesaptan_cikan);

    query.PREPARE_UPDATE ( "bnk_defter_fisler","fis_id","toplam_hesaba_giren ,     "
                           "toplam_hesaptan_cikan  ",
                           "fis_id = :fis_id");

    query.SET_VALUE      ( ":toplam_hesaba_giren"   , P_FIS->toplam_hesaba_giren    );
    query.SET_VALUE      ( ":toplam_hesaptan_cikan" , P_FIS->toplam_hesaptan_cikan  );
    query.SET_VALUE      ( ":fis_id"                , fis_id                        );
    query.UPDATE();

}
void FAT_FATURA_DETAYLARI_BATCH::RUN_BATCH ()
{
    int  new_tevkifatli_fatura_mi = QVariant ( m_ui->checkBox_tevkifatli_fatura_mi->isChecked() ).toInt();

    M_FATURA_DETAYLARI->yurtici_satislar_hesap_id     = m_sube_yurtici_satis_hsp_id;
    M_FATURA_DETAYLARI->hizmet_urt_maliyeti_hesap_id  = m_sube_hizmet_urt_maliyet_hsp_id;
    M_FATURA_DETAYLARI->tevkifatli_fatura_mi          = new_tevkifatli_fatura_mi;
    M_FATURA_DETAYLARI->tevkifat_yuzdesi              = m_ui->commaEdit_tevkifat_yuzdesi->GET_DOUBLE();
    M_FATURA_DETAYLARI->kdv_muaf_mi                   = QVariant ( m_ui->checkBox_kdv_muaf_mi->isChecked()).toInt();
    M_FATURA_DETAYLARI->otv_muaf_mi                   = QVariant ( m_ui->checkBox_otv_muaf_mi->isChecked()).toInt();
    M_FATURA_DETAYLARI->satistan_iade_hesap_id        = m_satistan_iade_hesap_id;

    bool tevkifatli_fatura_secenegi_degisti = false;
    bool hic_degisiklik_yapilmadi           = true;
    bool tevkifat_yuzdesi_degisti           = false;


    SQL_QUERY query ( DB );

    query.PREPARE_SELECT("fat_faturalar" , "isk_sonrasi_kdv_tutari, fatura_tutari, "
                         "tevkifatli_fatura_mi, tevkifat_yuzdesi, tevkifatli_kdv_tutari, "
                         "yurtici_satislar_hesap_id, hizmet_urt_maliyeti_hesap_id, "
                         "kdv_muaf_mi,otv_muaf_mi ,fatura_tarihi, "
                         "iskonto_yuzdesi, satistan_iade_hesap_id " , "fis_id = :fis_id");

    query.SET_VALUE ( ":fis_id", m_fis_id );

    if ( query.SELECT() EQ 0 ) {
        MSG_WARNING(  tr ( "Fatura bilgileri okunamadı"), NULL );
        return;
    }

    query.NEXT();

    double  kdv_tutari                              = query.VALUE ( "isk_sonrasi_kdv_tutari" ).toDouble();
    double  fatura_tutari                           = query.VALUE ( "fatura_tutari" ).toDouble();

    int     old_tevkifatli_fatura_mi                = query.VALUE ( "tevkifatli_fatura_mi" ).toInt();
    double  old_tevkifat_yuzdesi                    = query.VALUE ( "tevkifat_yuzdesi" ).toDouble();
    double  old_tevkifatli_kdv_tutari               = query.VALUE ( "tevkifatli_kdv_tutari" ).toDouble();

    int     old_yurtici_satislar_hesap_id           = query.VALUE ( "yurtici_satislar_hesap_id" ).toInt();
    int     old_hizmet_urt_maliyeti_hesap_id        = query.VALUE ( "hizmet_urt_maliyeti_hesap_id" ).toInt();
    int     old_satistan_iade_hesap_id              = query.VALUE ( "satistan_iade_hesap_id" ).toInt();
    int     old_kdv_muaf_mi                         = query.VALUE ( "kdv_muaf_mi" ).toInt();
    int     old_otv_muaf_mi                         = query.VALUE ( "otv_muaf_mi").toInt();

    QDate   fatura_tarihi                           = QDate::fromString(query.VALUE("fatura_tarihi").toString() , "yyyy.MM.dd");

    double  iskonto_yuzdesi                         = query.VALUE("iskonto_yuzdesi").toDouble();

    if ( old_tevkifatli_fatura_mi NE new_tevkifatli_fatura_mi ) {
        tevkifatli_fatura_secenegi_degisti  = true;
        hic_degisiklik_yapilmadi            = false;
    }

    if ( old_yurtici_satislar_hesap_id NE m_sube_yurtici_satis_hsp_id ) {
        hic_degisiklik_yapilmadi = false;
    }

    if ( old_hizmet_urt_maliyeti_hesap_id NE m_sube_hizmet_urt_maliyet_hsp_id ) {
        hic_degisiklik_yapilmadi = false;
    }

    if ( old_satistan_iade_hesap_id NE m_satistan_iade_hesap_id ) {
        hic_degisiklik_yapilmadi = false;
    }

    if ( old_tevkifat_yuzdesi NE m_ui->commaEdit_tevkifat_yuzdesi->GET_DOUBLE() ) {
        hic_degisiklik_yapilmadi = false;
        tevkifat_yuzdesi_degisti = true;
    }

    bool kdv_otv_muaf_mi_secenegi_degisti = false;

    if ( old_kdv_muaf_mi NE QVariant(m_ui->checkBox_kdv_muaf_mi->isChecked()).toInt() OR
         old_otv_muaf_mi NE QVariant(m_ui->checkBox_otv_muaf_mi->isChecked()).toInt() )  {
        hic_degisiklik_yapilmadi = false;
        kdv_otv_muaf_mi_secenegi_degisti = true;
    }

    if ( hic_degisiklik_yapilmadi EQ true ) {
        *m_return_value = false;
        close ();
    }

    DB->START_TRANSACTION();


    if ( kdv_otv_muaf_mi_secenegi_degisti EQ true ) {
        //vergiden muaf ise kdv ve otv oranlari tum satirlarda sifirlanir.
        SQL_QUERY update_query(DB);

        double brut_tutar                 = 0.0;
        double isk_oncesi_otv_dahil_tutar = 0.0;
        double isk_oncesi_kdv_dahil_tutar = 0.0;


        query.PREPARE_SELECT("fat_fatura_satirlari", "satirdaki_urun_miktari,kdv_dahil_mi,doviz_id,fis_satiri_id,"
                             "isk_sonrasi_urun_birim_fiyati,kdv_orani,otv_orani,"
                             "satir_kdv_tutari,satir_otv_tutari", "fis_id = :fis_id");

        query.SET_VALUE(":fis_id" , m_fis_id );

        if ( query.SELECT() NE 0 ) {

            while ( query.NEXT() ) {

                double satirdaki_urun_miktari        = query.VALUE(0).toDouble();
                int    kdv_dahil_mi                  = query.VALUE(1).toInt();
                int    doviz_id                      = query.VALUE(2).toInt();
                int    fis_satiri_id                 = query.VALUE(3).toInt();
                double isk_sonrasi_urun_birim_fiyati = query.VALUE(4).toDouble();
                double kdv_orani                     = query.VALUE("kdv_orani").toDouble();
                double otv_orani                     = query.VALUE("otv_orani").toDouble();
                double satir_kdv_tutari              = query.VALUE("satir_kdv_tutari").toDouble();
                double satir_otv_tutari              = query.VALUE("satir_otv_tutari").toDouble();

                double satir_tutari                  = satirdaki_urun_miktari * isk_sonrasi_urun_birim_fiyati;

                if ( m_ui->checkBox_kdv_muaf_mi->isChecked() EQ true ) {
                    kdv_orani        = 0;
                    satir_kdv_tutari = 0;
                    kdv_tutari       = 0;
                }
                if ( m_ui->checkBox_otv_muaf_mi->isChecked() EQ true ) {
                    otv_orani        = 0;
                    satir_otv_tutari = 0;
                }

                double otv_dahil_tutar   = 0.0;
                double vergi_haric_tutar = 0.0;

                if ( kdv_dahil_mi EQ 1 ) {
                    otv_dahil_tutar   = ROUND ( satir_tutari / ( 1 + ( kdv_orani / 100 ) )    );
                    vergi_haric_tutar = ROUND ( otv_dahil_tutar / ( 1 + ( otv_orani / 100 ) ) );
                }
                else {
                    vergi_haric_tutar = satir_tutari;
                    otv_dahil_tutar = ROUND ( vergi_haric_tutar * ( 1 + ( otv_orani / 100 ) ) );
                }



                double temel_para_birimi_vergi_haric_tutar = DVZ_PARA_BIRIMLERINI_DONUSTUR ( doviz_id,
                                                                                         vergi_haric_tutar,
                                                                                         DVZ_GET_TEMEL_PARA_BIRIMI_ID(),
                                                                                         fatura_tarihi);

                double temel_para_birimi_otv_dahil_tutar = ROUND ( temel_para_birimi_vergi_haric_tutar * ( 1 + ( otv_orani / 100 ) ) );

                double temel_para_birimi_kdv_tutari      = ROUND ( temel_para_birimi_otv_dahil_tutar * ( kdv_orani / 100 ) );

                double temel_para_birimi_kdv_dahil_tutar = ROUND ( temel_para_birimi_otv_dahil_tutar + temel_para_birimi_kdv_tutari );

                update_query.PREPARE_UPDATE("fat_fatura_satirlari","fis_satiri_id", "kdv_orani,"
                                     "otv_orani,satir_kdv_tutari , satir_kdv_dahil_tutar ,"
                                     "satir_vergi_haric_tutar , satir_otv_tutari  , satir_otv_dahil_tutar,"
                                     "satir_tutari ",
                                     "fis_satiri_id = :fis_satiri_id");

                update_query.SET_VALUE(":kdv_orani"               , kdv_orani);
                update_query.SET_VALUE(":otv_orani"               , otv_orani);
                update_query.SET_VALUE(":satir_kdv_tutari"        , satir_kdv_tutari);
                update_query.SET_VALUE(":satir_kdv_dahil_tutar"   , ROUND ( temel_para_birimi_kdv_dahil_tutar));
                update_query.SET_VALUE(":satir_vergi_haric_tutar" , ROUND ( temel_para_birimi_vergi_haric_tutar ));
                update_query.SET_VALUE(":satir_otv_tutari"        , satir_otv_tutari);
                update_query.SET_VALUE(":satir_otv_dahil_tutar"   , ROUND ( temel_para_birimi_otv_dahil_tutar ));
                update_query.SET_VALUE(":satir_tutari"            , ROUND ( satir_tutari));
                update_query.SET_VALUE(":fis_satiri_id"           , fis_satiri_id);

                update_query.UPDATE();

                brut_tutar                 += temel_para_birimi_vergi_haric_tutar;
                isk_oncesi_otv_dahil_tutar += temel_para_birimi_otv_dahil_tutar;
                isk_oncesi_kdv_dahil_tutar += temel_para_birimi_kdv_dahil_tutar;
            }

            //Satirlara gore fatura toplamlari ayarlanacak

            double  isk_sonrasi_otv_dahil_tutar     = ROUND ( isk_oncesi_otv_dahil_tutar    * ( 1 - ( iskonto_yuzdesi / 100 ) ) );
            double  ara_toplam                      = ROUND ( brut_tutar * ( 1 - ( iskonto_yuzdesi / 100 ) ) );

            fatura_tutari = ROUND ( isk_oncesi_kdv_dahil_tutar    * ( 1 - ( iskonto_yuzdesi / 100 ) ) );


            double KDV_TUTARLAR_ARRAY[KDV_OTV_ORANLARI_SAYISI];
            double OTV_TUTARLAR_ARRAY[KDV_OTV_ORANLARI_SAYISI];

            for ( int i = 0 ; i < KDV_OTV_ORANLARI_SAYISI ; i++ ) {
                KDV_TUTARLAR_ARRAY[i] = 0;
            }

            for ( int i = 0 ; i < KDV_OTV_ORANLARI_SAYISI ; i++ ) {
                OTV_TUTARLAR_ARRAY[i] = 0;
            }

            query.PREPARE_SELECT("fat_faturalar" ,"isk_oncesi_kdv_tutari,isk_oncesi_otv_tutari,"
                                 "isk_sonrasi_otv_tutari,isk_sonrasi_kdv_tutari" ,"fis_id = :fis_id");
            query.SET_VALUE(":fis_id" , m_fis_id);

            double isk_oncesi_kdv_tutari  = 0.0;
            double isk_oncesi_otv_tutari  = 0.0;
            double isk_sonrasi_otv_tutari = 0.0;
            double isk_sonrasi_kdv_tutari = 0.0;

            if ( query.SELECT() NE 0 ) {
                query.NEXT();

                isk_oncesi_kdv_tutari = query.VALUE(0).toDouble();
                isk_oncesi_otv_tutari = query.VALUE(1).toDouble();
                isk_sonrasi_otv_tutari= query.VALUE(2).toDouble();
                isk_sonrasi_kdv_tutari= query.VALUE(3).toDouble();
            }

            if ( m_ui->checkBox_kdv_muaf_mi->isChecked() EQ true ) {
                isk_oncesi_kdv_tutari = 0;
                isk_sonrasi_kdv_tutari= 0;
            }
            if ( m_ui->checkBox_otv_muaf_mi->isChecked() EQ true ) {
                isk_oncesi_otv_tutari = 0;
                isk_sonrasi_otv_tutari= 0;
            }

            query.PREPARE_UPDATE("fat_faturalar","fis_id", "isk_oncesi_kdv_tutari,"
                                 "isk_oncesi_otv_tutari ,brut_tutar ,"
                                 "isk_oncesi_kdv_dahil_tutar ,"
                                 "isk_oncesi_otv_dahil_tutar , "
                                 "isk_sonrasi_otv_tutari, isk_sonrasi_kdv_tutari,"
                                 "isk_sonrasi_otv_dahil_tutar , "
                                 "fatura_tutari , ara_toplam ,"
                                 "kdv_oran_bilgileri  , "
                                 "otv_oran_bilgileri  , "
                                 "kdv_oran_gore_tutarlar_array ,"
                                 "otv_oran_gore_tutarlar_array ",
                                 "fis_id = :fis_id");

            query.SET_VALUE(":isk_oncesi_kdv_tutari"        , isk_oncesi_kdv_tutari);
            query.SET_VALUE(":isk_oncesi_otv_tutari"        , isk_oncesi_otv_tutari);
            query.SET_VALUE(":brut_tutar"                   , ROUND ( brut_tutar ));
            query.SET_VALUE(":isk_oncesi_kdv_dahil_tutar"   , ROUND ( isk_oncesi_kdv_dahil_tutar));
            query.SET_VALUE(":isk_oncesi_otv_dahil_tutar"   , ROUND ( isk_oncesi_otv_dahil_tutar ));
            query.SET_VALUE(":isk_sonrasi_otv_tutari"       , isk_sonrasi_otv_tutari);
            query.SET_VALUE(":isk_sonrasi_kdv_tutari"       , isk_sonrasi_kdv_tutari);
            query.SET_VALUE(":isk_sonrasi_otv_dahil_tutar"  , ROUND ( isk_sonrasi_otv_dahil_tutar));
            query.SET_VALUE(":fatura_tutari"                , ROUND ( fatura_tutari ));
            query.SET_VALUE(":ara_toplam"                   , ROUND ( ara_toplam));
            query.SET_VALUE(":kdv_oran_bilgileri"           , "");
            query.SET_VALUE(":otv_oran_bilgileri"           , "");
            query.SET_VALUE(":kdv_oran_gore_tutarlar_array" , PACK_DOUBLE_ARRAY(KDV_TUTARLAR_ARRAY , KDV_OTV_ORANLARI_SAYISI));
            query.SET_VALUE(":otv_oran_gore_tutarlar_array" , PACK_DOUBLE_ARRAY(OTV_TUTARLAR_ARRAY , KDV_OTV_ORANLARI_SAYISI));
            query.SET_VALUE(":fis_id"                       , m_fis_id);

            query.UPDATE();

        }

    }
    double  tevkifatli_kdv_tutari                   = 0.00;

    if ( tevkifatli_fatura_secenegi_degisti EQ true ) {
        if ( old_tevkifatli_fatura_mi EQ 1 ) {
            kdv_tutari              = ROUND ( kdv_tutari       + old_tevkifatli_kdv_tutari );
            fatura_tutari           = ROUND ( fatura_tutari    + old_tevkifatli_kdv_tutari );
            tevkifatli_kdv_tutari   = 0.00;
        }
        else {
            tevkifatli_kdv_tutari = ROUND ( ( kdv_tutari * m_ui->commaEdit_tevkifat_yuzdesi->GET_DOUBLE() ) / 100 );
            kdv_tutari            = ROUND ( kdv_tutari     - tevkifatli_kdv_tutari );
            fatura_tutari         = ROUND ( fatura_tutari  - tevkifatli_kdv_tutari );
        }
    }
    else if ( tevkifat_yuzdesi_degisti EQ true ) {

        kdv_tutari            = ROUND ( kdv_tutari       + old_tevkifatli_kdv_tutari );
        fatura_tutari         = ROUND ( fatura_tutari    - kdv_tutari + old_tevkifatli_kdv_tutari );
        tevkifatli_kdv_tutari = ROUND ( ( kdv_tutari     * m_ui->commaEdit_tevkifat_yuzdesi->GET_DOUBLE() ) / 100 );
        kdv_tutari            = ROUND ( kdv_tutari       - tevkifatli_kdv_tutari );
        fatura_tutari         = ROUND ( fatura_tutari    + kdv_tutari );
    }


    query.PREPARE_UPDATE ( "fat_faturalar ","fis_id",
                           "yurtici_satislar_hesap_id , "
                           "hizmet_urt_maliyeti_hesap_id  , "
                           "tevkifatli_fatura_mi          , "
                           "tevkifat_yuzdesi              , "
                           "tevkifatli_kdv_tutari         , "
                           "isk_sonrasi_kdv_tutari        , "
                           "fatura_tutari                 , "
                           "satistan_iade_hesap_id        , "
                           "kdv_muaf_mi                   , "
                           "otv_muaf_mi                     ",
                           "fis_id = :fis_id" );

    query.SET_VALUE ( ":yurtici_satislar_hesap_id",         m_sube_yurtici_satis_hsp_id                           );
    query.SET_VALUE ( ":hizmet_urt_maliyeti_hesap_id",      m_sube_hizmet_urt_maliyet_hsp_id                   );
    query.SET_VALUE ( ":tevkifatli_fatura_mi",              new_tevkifatli_fatura_mi                         );
    query.SET_VALUE ( ":tevkifat_yuzdesi",                  m_ui->commaEdit_tevkifat_yuzdesi->GET_DOUBLE()   );
    query.SET_VALUE ( ":tevkifatli_kdv_tutari",             tevkifatli_kdv_tutari                            );
    query.SET_VALUE ( ":isk_sonrasi_kdv_tutari",            kdv_tutari                                       );
    query.SET_VALUE ( ":fatura_tutari",                     fatura_tutari                                    );
    query.SET_VALUE ( ":satistan_iade_hesap_id",            m_satistan_iade_hesap_id                         );
    query.SET_VALUE ( ":kdv_muaf_mi",                       QVariant(m_ui->checkBox_kdv_muaf_mi->isChecked()).toInt());
    query.SET_VALUE ( ":otv_muaf_mi",                       QVariant(m_ui->checkBox_otv_muaf_mi->isChecked()).toInt());
    query.SET_VALUE ( ":fis_id",                            m_fis_id                                         );

    query.UPDATE();

    DB->COMMIT_TRANSACTION();

    *m_return_value = true;
    close();
}