int PRS_PERSONEL_ODENEK_EKLEME_FISI::GET_FIS_RECORD ( int record_id )
{
    SQL_QUERY   sql_query(DB);
    SQL_QUERY   query    (DB);

    sql_query.PREPARE_SELECT( "prs_personeller ",
                              "sicil_no, cari_hesap_id",
                              "personel_id = :personel_id" );
    sql_query.SET_VALUE( ":personel_id", record_id );

    if ( sql_query.SELECT() EQ 0 ) {
        return ADAK_FAIL;
    }

    sql_query.NEXT();

    line_edit_personel_sicil_no->setText ( sql_query.VALUE(0).toString() );

    int cari_hesap_id   = sql_query.VALUE( 1 ).toInt();

    CARI_HESAP_STRUCT hesap_bilgileri;
    CARI_SET_HESAP_STRUCT_DEFAULTS(&hesap_bilgileri);

    CARI_KART_BILGILERINI_OKU( cari_hesap_id, &hesap_bilgileri  );

    line_edit_personel_adi_soyadi->setText( hesap_bilgileri.cari_hesap_ismi );


    query.PREPARE_SELECT ( "prs_ek_kesintiler_odenekler",
                           "kesinti_odenek_id, personel_id, order_number,  "
                           "odenek_kesinti_adi, bordro_donemi_ay, bordro_donemi_yil, ssk_kesintisi_iceriyor_mu, "
                           "gelir_vergisi_iceriyor_mu, damga_vergisi_iceriyor_mu, "
                           "yuzde_mi, yuzde_orani, tutar, aciklama, bordro_id ",
                           "personel_id = :personel_id "
                           "AND kesinti_odenek_turu = :kesinti_odenek_turu ");


    query.SET_VALUE      ( ":personel_id",          record_id );
    query.SET_VALUE      ( ":kesinti_odenek_turu"  , ENUM_PRS_ODENEK);

    query.SELECT("order_number ASC" );

    while ( query.NEXT() EQ true ) {

        int p_current_row;

        p_current_row = ADD_NEW_LINE ();

        QWidget     *  cell_widget = table_widget_odenek_satirlari->cellWidget( p_current_row, BORDRO_DONEMI_AY_COLUMN );
        QLineEdit   *   line_edit_odenek_adi                        = ( QLineEdit  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, ODENEK_ADI_COLUMN );
        QComboBox   *   combo_box_bordro_donemi_ay                  = ( QComboBox  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, BORDRO_DONEMI_AY_COLUMN );
        QComboBox   *   combo_box_bordro_donemi_yil                 = ( QComboBox  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, BORDRO_DONEMI_YIL_COLUMN );
        QCheckBox   *   check_box_odenek_ssk_kesintisi_iceriyor_mu  = ( QCheckBox  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, ODENEK_SSK_KESINTISI_ICERIYOR_MU_COLUMN );
        QCheckBox   *   check_box_odenek_gelir_vergisi_iceriyor_mu  = ( QCheckBox  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, ODENEK_GELIR_VERGISI_ICERIYOR_MU_COLUMN );
        QCheckBox   *   check_box_odenek_damga_vergisi_iceriyor_mu  = ( QCheckBox  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, ODENEK_DAMGA_VERGISI_ICERIYOR_MU_COLUMN );
        QComboBox   *   combo_box_odenek_yuzde_mi                   = ( QComboBox  * ) table_widget_odenek_satirlari->cellWidget( p_current_row, ODENEK_YUZDE_MI_COLUMN );
        QCommaEdit  *   comma_edit_yuzde_orani                      = ( QCommaEdit * ) table_widget_odenek_satirlari->cellWidget( p_current_row, YUZDE_COLUMN );
        QCommaEdit  *   comma_edit_tutar                            = ( QCommaEdit * ) table_widget_odenek_satirlari->cellWidget( p_current_row, TUTAR_COLUMN );

        line_edit_odenek_adi->setText( query.VALUE("odenek_kesinti_adi").toString() );
        combo_box_bordro_donemi_ay->setCurrentIndex( query.VALUE("bordro_donemi_ay").toInt() );
        combo_box_bordro_donemi_yil->setCurrentIndex( combo_box_bordro_donemi_yil->findText( query.VALUE("bordro_donemi_yil").toString()) );
        check_box_odenek_ssk_kesintisi_iceriyor_mu->setChecked( query.VALUE("ssk_kesintisi_iceriyor_mu").toInt() );
        check_box_odenek_gelir_vergisi_iceriyor_mu->setChecked( query.VALUE("gelir_vergisi_iceriyor_mu").toInt() );
        check_box_odenek_damga_vergisi_iceriyor_mu->setChecked( query.VALUE("damga_vergisi_iceriyor_mu").toInt() );
        combo_box_odenek_yuzde_mi->setCurrentIndex( query.VALUE("yuzde_mi").toInt() );
        comma_edit_yuzde_orani->SET_DOUBLE ( query.VALUE("yuzde_orani").toDouble() );
        comma_edit_tutar->SET_DOUBLE ( query.VALUE("tutar").toDouble() );

        if ( combo_box_odenek_yuzde_mi->currentText() EQ tr("TUTAR") ) {
            comma_edit_tutar->setEnabled( true );
        }
        else {
            comma_edit_yuzde_orani->setEnabled( true );
        }

        cell_widget = table_widget_odenek_satirlari->cellWidget( p_current_row, ACIKLAMA_COLUMN );
        QLineEdit  *   line_edit_aciklama    = static_cast < QLineEdit * > ( cell_widget );
        line_edit_aciklama->setText( query.VALUE("aciklama").toString() );


        QString id                                  = query.VALUE("kesinti_odenek_id").toString();
        QString personel_id                         = query.VALUE("personel_id").toString();
        QString order_number                        = query.VALUE("order_number").toString();

        QTableWidgetItem * new_item;

        new_item = new QTableWidgetItem(tr("%1").arg(id));
        table_widget_odenek_satirlari->setItem(p_current_row, ROW_ID_COLUMN, new_item);

        new_item = new QTableWidgetItem(tr("%1").arg(personel_id));
        table_widget_odenek_satirlari->setItem(p_current_row, RECORD_ID_COLUMN, new_item);

        new_item = new QTableWidgetItem(tr("%1").arg(order_number));
        table_widget_odenek_satirlari->setItem(p_current_row, ORDER_COLUMN, new_item);

    }
    return ADAK_OK;
}
QString MAAS_BORDROSU_RAPORU::GET_BODY()
{
    SQL_QUERY           sql_query        ( DB );
    SQL_QUERY           sql_query_bordro ( DB );
    SQL_QUERY           query           (DB);

    QStringList         string_list;
    int                 personel_id;
    QString             ad_soyad;
    QString             tc_kimlik_no;
    int                 gun_sayisi              , toplam_gun                        = 0.00;
    double              net_ucret               , toplam_net_ucret                  = 0.00;
    double              brut_ucret              , toplam_brut_ucret                 = 0.00;
    double              issizlik_primi          , toplam_issizlik_primi             = 0.00;
    double              sigorta_primi           , toplam_sigorta_primi              = 0.00;
    double              gelir_vergi_matrahi     , toplam_gelir_vergi_matrahi        = 0.00;
    double              gelir_vergisi           , toplam_gelir_vergisi              = 0.00;
    double              asgari_gecim_indirimi   , toplam_asgari_gecim_indirimi      = 0.00;
    double              damga_vergisi           , toplam_damga_vergisi              = 0.00;
    double              kesintiler_toplami      , toplam_kesintiler_toplami         = 0.00;
    double              odenekler_toplami       , toplam_odenekler_toplami          = 0.00;
    double              kumulatif_vergi_matrahi , toplam_kumulatif_vergi_matrahi    = 0.00;
    double              ozel_kesintiler_toplami , toplam_ozel_kesintiler_toplami    = 0.00;
    double              ssk_matrahi             , toplam_ssk_matrahi                = 0.00;

    m_toplam_bordro_sayisi++;

    if ( m_rapor_bitti EQ true ) {
        return NULL;
    }

    string_list<<"Adı/Soyadı"<<"T.C.No"<<"Gün"<<"Brüt<br>Ücret"<<"Ödenek<br>Toplamı" << "SSK Matrahı" <<"Sigorta<br>Primi"<<"İşsiz.<br>Primi"
                   <<"G.Vergi<br>Matrahı"<<"G.Vergisi"<<"DÖKGV"<<"Damga<br>Vergisi"
                   <<"Kesinti<br>Toplamı" << "Özel Kesinti T." << "Kümülatif <br>Vergi Matrahi"<< "Vergi O."<<"Asg.<br>Geç.İnd."<<"Net<br>Ödeme"<<"İmza";

    SET_TABLE_TAG_STRING("<TABLE WIDTH=100% style=\"font-size:65%;\" BORDER=1 >");

    SET_TD_TAG_STRING(QStringList()<<"WIDTH = 9% ALIGN=LEFT"    <<"WIDTH = 8% ALIGN=LEFT"       <<"WIDTH = 3% ALIGN=RIGHT"
                                   <<"WIDTH = 5.5% ALIGN=RIGHT" <<"WIDTH = 5.5% ALIGN=RIGHT"    <<"WIDTH = 5.5% ALIGN=RIGHT"
                                   <<"WIDTH = 6% ALIGN=RIGHT"   <<"WIDTH = 4.5% ALIGN=RIGHT"    <<"WIDTH = 5% ALIGN=RIGHT"
                                   <<"WIDTH = 5% ALIGN=RIGHT"   <<"WIDTH = 5% ALIGN=RIGHT"      <<"WIDTH = 5% ALIGN=RIGHT"
                                   <<"WIDTH = 5.5% ALIGN=RIGHT" <<"WIDTH = 5.5% ALIGN=RIGHT"    <<"WIDTH = 5.5% ALIGN=RIGHT"
                                   <<"WIDTH = 6.5% ALIGN=RIGHT" <<"WIDTH = 4% ALIGN=RIGHT"      <<"WIDTH = 5% ALIGN=RIGHT"
                                   <<"WIDTH = 5% ALIGN=RIGHT");

    CREATE_TABLE (string_list, 0, 0);

    string_list.clear();

    sql_query_bordro.PREPARE_SELECT("prs_bordro_personelleri , prs_personeller ",
                                    "prs_bordro_personelleri.personel_id, calisilan_gun_sayisi, "
                                    "prs_bordro_personelleri.brut_ucret, prs_bordro_personelleri.net_ucret, "
                                    "sigorta_primi, issizlik_primi, gelir_vergi_matrahi, gelir_vergisi, asg_gec_indirimi, "
                                    "damga_vergisi, kesintiler_toplami, odenekler_toplami, brd_sonrasi_kum_vergi_matrahi, ozel_kesintiler_toplami ,"
                                    "ssk_matrahi",
                                    "prs_personeller.personel_id = prs_bordro_personelleri.personel_id" );

    sql_query_bordro.AND_EKLE ( "bordro_id = :bordro_id");
    sql_query_bordro.SET_VALUE( ":bordro_id"   , m_bordro_id );

    personel_id = PRS_GET_PERSONEL_ID ( m_sicil_no );

    if ( m_sicil_no NE "-1" ) {
        sql_query_bordro.AND_EKLE   ( "prs_personeller.personel_id  = :personel_id");
        sql_query_bordro.SET_VALUE  ( ":personel_id" , personel_id );
    }

    if ( sql_query_bordro.SELECT() EQ 0 ) {
        return NULL;
    }

    while ( sql_query_bordro.NEXT() EQ true ) {

        personel_id = sql_query_bordro.VALUE("personel_id").toInt();
        query.PREPARE_SELECT("prs_puantaj","gun_sayisi","personel_id= :personel_id");
        query.SET_VALUE(":personel_id",personel_id);

        if ( query.SELECT() EQ 0 ) {
            return NULL;
        }
        sql_query.PREPARE_SELECT("prs_personeller",
                                 "cari_hesap_id ",
                                 "personel_id = :personel_id");

        sql_query.SET_VALUE( ":personel_id" , personel_id );

        if ( sql_query.SELECT() EQ 0 ) {
            return NULL;
        }

        sql_query.NEXT();

        int     cari_hesap_id   = sql_query.VALUE( "cari_hesap_id" ).toInt();

        CARI_HESAP_STRUCT hesap_bilgileri;
        CARI_SET_HESAP_STRUCT_DEFAULTS(&hesap_bilgileri);

        CARI_KART_BILGILERINI_OKU( cari_hesap_id, &hesap_bilgileri  );

        ad_soyad                        =  hesap_bilgileri.cari_hesap_ismi;
        tc_kimlik_no                    =  hesap_bilgileri.kimlik_no;
        brut_ucret                      =  sql_query_bordro.VALUE("brut_ucret").toDouble();
        toplam_brut_ucret              +=  brut_ucret;
        odenekler_toplami               =  sql_query_bordro.VALUE("odenekler_toplami").toDouble();
        toplam_odenekler_toplami       +=  odenekler_toplami;
        ssk_matrahi                     =  sql_query_bordro.VALUE("ssk_matrahi").toDouble();
        toplam_ssk_matrahi             +=  ssk_matrahi;
        sigorta_primi                   =  sql_query_bordro.VALUE("sigorta_primi").toDouble();
        toplam_sigorta_primi           +=  sigorta_primi;
        gun_sayisi                      =  sql_query_bordro.VALUE("calisilan_gun_sayisi").toInt();
        toplam_gun                     +=  gun_sayisi;
        issizlik_primi                  =  sql_query_bordro.VALUE("issizlik_primi").toDouble();
        toplam_issizlik_primi          +=  issizlik_primi;
        gelir_vergi_matrahi             =  sql_query_bordro.VALUE("gelir_vergi_matrahi").toDouble();
        toplam_gelir_vergi_matrahi     +=  gelir_vergi_matrahi;
        gelir_vergisi                   =  sql_query_bordro.VALUE("gelir_vergisi").toDouble();
        toplam_gelir_vergisi           +=  gelir_vergisi;
        damga_vergisi                   =  sql_query_bordro.VALUE("damga_vergisi").toDouble();
        toplam_damga_vergisi           +=  damga_vergisi;
        kesintiler_toplami              =  sql_query_bordro.VALUE("kesintiler_toplami").toDouble();
        toplam_kesintiler_toplami      +=  kesintiler_toplami;
        ozel_kesintiler_toplami         =  sql_query_bordro.VALUE("ozel_kesintiler_toplami").toDouble();
        toplam_ozel_kesintiler_toplami +=  ozel_kesintiler_toplami;
        asgari_gecim_indirimi           =  sql_query_bordro.VALUE("asg_gec_indirimi").toDouble();
        toplam_asgari_gecim_indirimi   +=  asgari_gecim_indirimi;
        net_ucret                       =  sql_query_bordro.VALUE("net_ucret").toDouble();
        toplam_net_ucret               +=  net_ucret;
        kumulatif_vergi_matrahi         =  sql_query_bordro.VALUE("brd_sonrasi_kum_vergi_matrahi").toDouble(); // her ayin vergi matrahini getirmesi gerekiyor
        toplam_kumulatif_vergi_matrahi +=  kumulatif_vergi_matrahi;

        string_list.clear();

        string_list<<QVariant(ad_soyad).toString()
                   <<tc_kimlik_no
                   <<QVariant(gun_sayisi).toString()
                   <<VIRGUL_EKLE(QVariant(brut_ucret).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(odenekler_toplami).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(ssk_matrahi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(sigorta_primi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(issizlik_primi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(gelir_vergi_matrahi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(gelir_vergisi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant((gelir_vergisi - asgari_gecim_indirimi)).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(damga_vergisi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(kesintiler_toplami).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(ozel_kesintiler_toplami).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(kumulatif_vergi_matrahi ).toString(), 2, false)
                   <<"%"+ QVariant(PRS_GET_KUMULATIF_VERGI_ORANI( kumulatif_vergi_matrahi ) *100 ).toString()
                   <<VIRGUL_EKLE(QVariant(asgari_gecim_indirimi).toString(), 2, false)
                   <<VIRGUL_EKLE(QVariant(net_ucret).toString(), 2, false)<< "";

        ADD_ROW_TO_TABLE(string_list);

        m_rapor_bitti = true;
    }
    string_list.clear();

    string_list<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<""<<"-";

    ADD_ROW_TO_TABLE(string_list);

    string_list.clear();

    string_list<<"<font size=3>""Toplam"<< ""<<QVariant(toplam_gun).toString()
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_brut_ucret).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_odenekler_toplami).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_ssk_matrahi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_sigorta_primi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_issizlik_primi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_gelir_vergi_matrahi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_gelir_vergisi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant((toplam_gelir_vergisi - toplam_asgari_gecim_indirimi)).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_damga_vergisi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_kesintiler_toplami).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_ozel_kesintiler_toplami ).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_kumulatif_vergi_matrahi ).toString(), 2, false)
               <<"" // kumulatif vergi matrahi
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_asgari_gecim_indirimi).toString(), 2, false)
               <<"<font size=2>"+VIRGUL_EKLE(QVariant(toplam_net_ucret).toString(), 2, false)<< "";

    ADD_ROW_TO_TABLE(string_list);

    return GET_TABLE_HTML_STRING();
}
int PRS_PUANTAJLARI_GOR_VE_DUZELT_FISI::GET_FIS_RECORD ( int record_id )
{

    SQL_QUERY  query    ( DB );
    SQL_QUERY  s_query  ( DB );

    QString bordro_bas_donemi = PRS_GET_BORDRO_DONEMI_BAS_STRING( m_bordro_yili, m_bordro_ayi );
    QString bordro_bts_donemi = PRS_GET_BORDRO_DONEMI_BTS_STRING( m_bordro_yili, m_bordro_ayi );

    // isten ayrilanlar

    query.PREPARE_SELECT("prs_personel_nufus_blgler, prs_personeller, prs_personel_kisisel_blgler " ,
                         "prs_personel_nufus_blgler.personel_id, "
                         "ucret_sekli,                  "
                         "net_ucret,                    "
                         "brut_ucret ,                  "
                         "ise_giris_tarihi,             "
                         "cari_hesap_id,                "
                         "ise_giris_tarihi,             "
                         "calisma_sekli,                "
                         "haftalik_calisilan_gun_sayisi,"
                         "isten_cikis_tarihi",

                         "prs_personel_nufus_blgler.personel_id         = prs_personeller.personel_id               "
                         "AND prs_personel_kisisel_blgler.personel_id   = prs_personeller.personel_id               "
                         "AND sube_id = :sube_id                              "
                         "AND ise_giris_tarihi   <= :ise_giris_tarihi         "
                         "AND isten_cikis_tarihi >= :isten_cikis_tarihi       " );
    query.SET_VALUE(":sube_id"            , m_sube_id);
    query.SET_VALUE(":ise_giris_tarihi"   , bordro_bts_donemi );
    query.SET_VALUE(":isten_cikis_tarihi" , bordro_bas_donemi );

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

    int current_row     = -1;
    int prs_doviz_id    =  0;

    while ( query.NEXT() NE 0 ) {

        int personel_id = query.VALUE("personel_id").toInt();


        int cari_hesap_id           = query.VALUE( "cari_hesap_id").toInt();
        QDate ise_giris_tarihi      = QDate::fromString( query.VALUE( "ise_giris_tarihi" ).toString(), "yyyy.MM.dd" );
        QString isten_cikis_tarihi  = query.VALUE( "isten_cikis_tarihi" ).toString();

        CARI_HESAP_STRUCT hesap_bilgileri;
        CARI_SET_HESAP_STRUCT_DEFAULTS(&hesap_bilgileri);

        CARI_KART_BILGILERINI_OKU( cari_hesap_id, &hesap_bilgileri  );

        current_row = ADD_NEW_LINE();

        QLineEdit * line_edit_adi_soyad       = ( QLineEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row ,ADI_COLUMN);

        line_edit_adi_soyad->setText( hesap_bilgileri.cari_hesap_ismi );

        int calisma_sekli                       = query.VALUE("calisma_sekli").toInt();

        prs_doviz_id                            = CARI_GET_PARA_BIRIM_ID( cari_hesap_id );

        int ucret_sekli_enum                    = query.VALUE( "ucret_sekli" ).toInt();
        double net_ucret                        = query.VALUE( "net_ucret"   ).toDouble();
        double brut_ucret                       = query.VALUE( "brut_ucret"  ).toDouble();
        double haftalik_calisilan_gun_sayisi    = query.VALUE( "haftalik_calisilan_gun_sayisi" ).toDouble();

        double prs_personel_ucret = net_ucret;
        if ( ucret_sekli_enum EQ PRS_BRUT ) {
            prs_personel_ucret    = brut_ucret;
        }

        QTableWidgetItem * new_item;

        new_item = new QTableWidgetItem(tr("%1").arg(personel_id));
        m_ui->table_widget_gun_satirlari->setItem(current_row ,ROW_ID_COLUMN ,new_item);

        new_item=new QTableWidgetItem(tr("%1").arg(record_id));
        m_ui->table_widget_gun_satirlari->setItem(current_row ,RECORD_ID_COLUMN ,new_item);

        QLineEdit * line_edit_calisma_sekli  = ( QLineEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row, CALISMA_SEKLI);
        line_edit_calisma_sekli->setText( QVariant ( calisma_sekli ).toString() );

        s_query.PREPARE_SELECT ("prs_puantaj","gun_sayisi ",
                                "personel_id = :personel_id  "
                                "AND bordro_donemi_yil    = :bordro_donemi_yil  "
                                "AND bordro_donemi_ay     = :bordro_donemi_ay   ");
        s_query.SET_VALUE (":personel_id"       ,  personel_id   );
        s_query.SET_VALUE (":bordro_donemi_yil" ,  m_bordro_yili );
        s_query.SET_VALUE (":bordro_donemi_ay"  ,  m_bordro_ayi );

        QCommaEdit * comma_edit_doviz_kuru              = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget( current_row, KUR_COLUMN );
        QCommaEdit * comma_edit_aldigi_ucret            = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget( current_row, ALDIGI_UCRET );
        QCommaEdit * comma_edit_ucret_tutari            = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget( current_row, TEMEL_PARABIRIMI_UCRET );
        QCommaEdit * comma_edit_gun                     = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row,CALISTIGI_GUN_COLUMN);
        QCommaEdit * comma_edit_ek_odenek               = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row,EK_ODENEK_TUTARI);
        QCommaEdit * comma_edit_ek_kesinti              = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row,EK_KESINTI_TUTARI);
        QCommaEdit * comma_edit_gunluk_ucret            = ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row,GUNLUK_UCRET   );
        QCommaEdit * comma_edit_yemek_verilen_gun_sayisi= ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row,YEMEK_VERILEN_GUN_SAYISI   );

        comma_edit_yemek_verilen_gun_sayisi->SET_DOUBLE( haftalik_calisilan_gun_sayisi * 4 );

        double eksik_gun_sayisi = PRS_GET_EKSIK_GUN_SAYISI( personel_id, m_bordro_ayi, m_bordro_yili );

        if ( eksik_gun_sayisi > 0.00 ) {

            if ( isten_cikis_tarihi NE "9999.99.99" ) {
                comma_edit_gun->SET_DOUBLE( QDate::fromString( isten_cikis_tarihi, "yyyy.MM.dd").daysInMonth() -  eksik_gun_sayisi );
            }
            else {
                comma_edit_gun->SET_DOUBLE( QDate::fromString( bordro_bts_donemi, "yyyy.MM.dd").daysInMonth() -  eksik_gun_sayisi );
            }
        }
        else {
            if ( isten_cikis_tarihi NE "9999.99.99" ) {
                QDate isten_cikis_date = QDate::fromString( isten_cikis_tarihi, "yyyy.MM.dd");
                comma_edit_gun->SET_DOUBLE( isten_cikis_date.day() );
            }
            else {
                comma_edit_gun->SET_DOUBLE( 30 );
            }
        }

        int gun_sayisi = comma_edit_gun->GET_DOUBLE();
        if ( ise_giris_tarihi.year() EQ m_bordro_yili )  {

            QDate bordro_tarihi;
            if ( ise_giris_tarihi.month() EQ m_bordro_ayi ) {
                int ise_giris_gunu = ise_giris_tarihi.day();

                bordro_tarihi = QDate::fromString( bordro_bts_donemi, "yyyy.MM.dd" );

                if ( isten_cikis_tarihi NE "9999.99.99" ) {
                    bordro_tarihi = QDate::fromString( isten_cikis_tarihi, "yyyy.MM.dd" );
                    gun_sayisi = bordro_tarihi.day();
                }
                else {
                    gun_sayisi = bordro_tarihi.daysInMonth();
                }

                gun_sayisi = gun_sayisi - ise_giris_gunu + 1 ;

                comma_edit_gun->SET_INTEGER( gun_sayisi );
            }

            comma_edit_yemek_verilen_gun_sayisi->SET_DOUBLE( haftalik_calisilan_gun_sayisi * floor( comma_edit_gun->GET_DOUBLE() / 7.0 ) );
        }

        // GUNLUK UCRET PUANTAJ'DA GUN DEGISTIRILIRSE OTOMATIK CARPILACAK
        comma_edit_gunluk_ucret->SET_DOUBLE( ROUND( prs_personel_ucret / 30 ));
        if ( calisma_sekli EQ ENUM_GUNLUK ) {
            comma_edit_gunluk_ucret->SET_DOUBLE( prs_personel_ucret );
        }
        if ( calisma_sekli EQ ENUM_AYLIK and gun_sayisi > 30 ) {
            comma_edit_gun->SET_DOUBLE( 30 );
        }

        if ( calisma_sekli EQ ENUM_GUNLUK ) {
            prs_personel_ucret = ROUND( comma_edit_gun->GET_DOUBLE() * comma_edit_gunluk_ucret->GET_DOUBLE() );
        }

        if ( prs_doviz_id NE DVZ_GET_TEMEL_PARA_BIRIMI_ID() ) {
            comma_edit_doviz_kuru->setEnabled( true );
        }

        // personel ek odenek bilgileri sorgulaniyor.

        double toplam_ek_odenek  = 0.00;
        double toplam_ek_kesinti = 0.00;

        SQL_QUERY t_query( DB );

        t_query.PREPARE_SELECT( "prs_ek_kesintiler_odenekler",
                                "yuzde_mi, yuzde_orani, tutar, kesinti_odenek_turu ",
                                "personel_id         = :personel_id       AND "
                                "bordro_donemi_yil   = :bordro_donemi_yil AND "
                                "bordro_donemi_ay    = :bordro_donemi_ay      ");

        t_query.SET_VALUE( ":personel_id"           , personel_id       );
        t_query.SET_VALUE( ":bordro_donemi_yil"     , m_bordro_yili     );
        t_query.SET_VALUE( ":bordro_donemi_ay "     , m_bordro_ayi      );

        if ( t_query.SELECT() NE 0 ) {
            while ( t_query.NEXT() EQ true ) {
                int     yuzde_mi            = t_query.VALUE( "yuzde_mi" ).toInt();
                int     kesinti_odenek_turu = t_query.VALUE( "kesinti_odenek_turu" ).toInt();
                double  yuzde_orani         = t_query.VALUE( "yuzde_orani" ).toDouble();
                double  tutar               = t_query.VALUE( "tutar" ).toDouble();

                if ( yuzde_mi EQ 1 ) {
                    if ( kesinti_odenek_turu EQ ENUM_PRS_ODENEK ) {
                        toplam_ek_odenek    += ROUND( prs_personel_ucret * yuzde_orani );
                    }
                    if ( kesinti_odenek_turu EQ ENUM_PRS_KESINTI ) {
                        toplam_ek_kesinti  += ROUND( prs_personel_ucret * yuzde_orani );
                    }
                }
                else {
                    if ( kesinti_odenek_turu EQ ENUM_PRS_ODENEK ) {
                        toplam_ek_odenek    += tutar;
                    }
                    if ( kesinti_odenek_turu EQ ENUM_PRS_KESINTI ) {
                        toplam_ek_kesinti  += tutar;
                    }
                }
            }
        }

        comma_edit_aldigi_ucret->SET_DOUBLE ( prs_personel_ucret );
        comma_edit_ek_odenek->SET_DOUBLE    ( toplam_ek_odenek   );
        comma_edit_ek_kesinti->SET_DOUBLE   ( toplam_ek_kesinti  );
        comma_edit_doviz_kuru->SET_DOUBLE   ( DVZ_DOVIZ_KURUNU_AL( prs_doviz_id, QDate::currentDate(), ENUM_SATIS ) );
        comma_edit_ucret_tutari->SET_DOUBLE ( ROUND( comma_edit_doviz_kuru->GET_DOUBLE() * prs_personel_ucret ) );

        if ( s_query.SELECT() EQ 0 ) {
            DB->START_TRANSACTION();
            QCommaEdit * comma_edit_kur   =  ( QCommaEdit * ) m_ui->table_widget_gun_satirlari->cellWidget(current_row ,KUR_COLUMN);
            SQL_QUERY insert_query(DB);
            insert_query.PREPARE_INSERT("prs_puantaj", "puantaj_id" ,
                                        "personel_id , gun_sayisi ,doviz_kuru,  "
                                        "temel_para_birim_tutari , bordro_donemi_yil, bordro_donemi_ay, yemek_verilen_gun_sayisi ");

            insert_query.SET_VALUE(":personel_id"               , personel_id);
            insert_query.SET_VALUE(":gun_sayisi"                , comma_edit_gun->GET_DOUBLE());
            insert_query.SET_VALUE(":doviz_kuru"                , comma_edit_kur->GET_DOUBLE());
            insert_query.SET_VALUE(":temel_para_birim_tutari"   , comma_edit_ucret_tutari->GET_DOUBLE() );
            insert_query.SET_VALUE(":bordro_donemi_yil"         , m_bordro_yili );
            insert_query.SET_VALUE(":bordro_donemi_ay"          , m_bordro_ayi );
            insert_query.SET_VALUE(":yemek_verilen_gun_sayisi"  , comma_edit_yemek_verilen_gun_sayisi->GET_DOUBLE() );

            insert_query.INSERT();
            DB->COMMIT_TRANSACTION();
        }

    }
    return ADAK_OK;
}
void MUH_FIS_KOPYALAMA_BATCH::RUN_BATCH()
{

    DB->START_TRANSACTION();
    SQL_QUERY query ( DB );

    MUH_FIS_STRUCT        *  NEW_MUH_FIS        = new MUH_FIS_STRUCT;
    MUH_FIS_SATIRI_STRUCT *  NEW_MUH_FIS_SATIRI = new MUH_FIS_SATIRI_STRUCT;

    MUH_CLEAR_FIS_STRUCT(NEW_MUH_FIS);


    int siradaki_fis_no = MUH_SIRADAKI_FIS_NO_AL ( m_ui->adakDate_yeni_fis_tarihi->DATE() );

    if ( siradaki_fis_no NE m_ui->lineEdit_yeni_fis_no->text().toInt() ) {
        m_ui->lineEdit_yeni_fis_no->setText ( QVariant ( siradaki_fis_no ).toString() );
    }

    NEW_MUH_FIS->fis_no           = m_ui->lineEdit_yeni_fis_no->text().toInt();
    NEW_MUH_FIS->fis_tarihi       = m_ui->adakDate_yeni_fis_tarihi->DATE();
    NEW_MUH_FIS->aciklama         = m_ui->textedit_new_aciklama->toPlainText();
    NEW_MUH_FIS->kasa_hesabi_id   = M_FIS->kasa_hesabi_id;
    NEW_MUH_FIS->fis_turu         = M_FIS->fis_turu;
    NEW_MUH_FIS->modul_id         = MUHASEBE_MODULU;
    NEW_MUH_FIS->program_id       = M_FIS->program_id;
    NEW_MUH_FIS->base_fis_id      = 0;

    int record_id  = MUH_FIS_EKLE( NEW_MUH_FIS );


    query.PREPARE_SELECT("muh_fis_satirlari" , "fis_satiri_id" , "fis_id =:fis_id AND gizli_satir_mi = :gizli_satir_mi ");

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

    if( query.SELECT() EQ  0 ){
        DB->CANCEL_TRANSACTION();
        MSG_WARNING( tr ( "Kopyalanan fiş satırı bulunamadı" ), NULL );
        return;
    }

    while ( query.NEXT() EQ true ) {

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

        MUH_CLEAR_FIS_SATIRI_STRUCT( NEW_MUH_FIS_SATIRI);

        MUH_FIS_SATIRINI_OKU( NEW_MUH_FIS_SATIRI, fis_satiri_id );

        NEW_MUH_FIS_SATIRI->fis_id = record_id;

        MUH_FIS_SATIRI_EKLE( NEW_MUH_FIS, NEW_MUH_FIS_SATIRI );

    }

    if ( record_id < 1 ) {
        MSG_WARNING( tr ( "Fiş Kopyalanamadı." ), NULL );
    }

    m_ui->search_edit_fis_no->SET_TEXT ( "" );
    m_ui->adakDate_yeni_fis_tarihi->SET_DATE(MALI_YIL_FIRST_DATE() );
    m_ui->commaedit_top_alacak->clear();
    m_ui->commaedit_top_borc->clear();
    m_ui->textedit_aciklama->clear();
    m_ui->textedit_new_aciklama->clear();

    MSG_INFO("Fiş Kopyalandı.", NULL );

    QString log_detaylari = QObject::tr ( "Log Türü - Fiş Kopyalama ," );
    log_detaylari.append ( MUH_GET_FIS_TURLERI_STRING ( M_FIS->fis_turu ) + "," + M_FIS->fis_tarihi + ",Fiş No : "  +
                           QVariant( M_FIS->fis_no ).toString() + ",Toplam Borç : " +
                           VIRGUL_EKLE ( QVariant ( ROUND ( M_FIS->toplam_borc ) ).toString() ) + ",Toplam Alacak : " +
                           VIRGUL_EKLE ( QVariant ( ROUND ( M_FIS->toplam_alacak ) ).toString() ) );

    log_detaylari.append ( "--Fişi Kopyalandı" );

    E9_LOG_KAYDI_EKLE ( MUHASEBE_MODULU , LOG_MUH_FIS_KOPYALAMA , LOG_ISLEM_ADD , log_detaylari );

    DB->COMMIT_TRANSACTION  ();

    delete NEW_MUH_FIS;
    delete NEW_MUH_FIS_SATIRI;
}
int MUH_FIS_KOPYALAMA_BATCH::CHECK_VAR ( QObject * p_object )
{
    SQL_QUERY   query ( DB );

    if ( p_object EQ m_ui->adakDate_yeni_fis_tarihi ) {

        if ( m_fis_turu EQ ENUM_ACILIS_FISI OR m_fis_turu EQ ENUM_KAPANIS_FISI ) {
            MSG_WARNING( tr ( "Fiş Tarihini değiştiremezsiniz!.." ), NULL );
            return ADAK_FAIL_UNDO;
        }

        int siradaki_fis_no = MUH_SIRADAKI_FIS_NO_AL ( m_ui->adakDate_yeni_fis_tarihi->DATE() );
        m_ui->lineEdit_yeni_fis_no->setText ( QVariant (  siradaki_fis_no ).toString() );
    }

    else if ( p_object EQ m_ui->search_edit_fis_no ) {

        if ( m_ui->search_edit_fis_no->GET_TEXT().isEmpty() EQ true ) {
            m_fis_id   = 0;
            m_fis_turu = -1;
            m_ui->commaedit_top_borc->clear();
            m_ui->commaedit_top_alacak->clear();
            m_ui->textedit_aciklama->clear();
            return ADAK_OK;
        }

        query.PREPARE_SELECT("muh_fisler" , "fis_id ,fis_tarihi , aciklama , toplam_borc, toplam_alacak, "
                             "kasa_hesabi_id, fis_turu " , "fis_no = :fis_no AND fis_tarihi = :fis_tarihi");


        query.SET_VALUE ( ":fis_no"    , m_ui->search_edit_fis_no->GET_TEXT().toInt() );
        query.SET_VALUE ( ":fis_tarihi", m_ui->adakDate_kopyalanacak_fis_tarihi->DATE() );

        if ( query.SELECT() EQ 0 ) {
            MSG_WARNING( tr ( "Fiş bulunamadı" ), m_ui->search_edit_fis_no );

            return ADAK_FAIL_UNDO;
        }

        query.NEXT();

        m_fis_id = query.VALUE(0).toInt();

        m_ui->adakDate_kopyalanacak_fis_tarihi->SET_DATE(  query.VALUE(1).toString()  );
        m_ui->textedit_aciklama->setPlainText           ( query.VALUE(2).toString() );
        m_ui->commaedit_top_borc->SET_DOUBLE            ( query.VALUE(3).toDouble() );
        m_ui->commaedit_top_alacak->SET_DOUBLE          ( query.VALUE(4).toDouble() ) ;

        int siradaki_fis_no = MUH_SIRADAKI_FIS_NO_AL    ( m_ui->adakDate_yeni_fis_tarihi->DATE() );
        m_ui->lineEdit_yeni_fis_no->setText ( QVariant  ( siradaki_fis_no ).toString() );

        m_fis_turu = query.VALUE(6).toInt();

    }
    else if ( p_object EQ m_ui->lineEdit_yeni_fis_no ) {

        query.PREPARE_SELECT("muh_fisler" , "fis_id" , "fis_no = :fis_no "
                             "AND fis_tarihi = :fis_tarihi");

        query.SET_VALUE ( ":fis_no",       m_ui->lineEdit_yeni_fis_no->text() );
        query.SET_VALUE ( ":fis_tarihi",   m_ui->adakDate_yeni_fis_tarihi->DATE() );

        if ( query.SELECT() NE 0 ) {
            MSG_WARNING( tr ( "Bu fiş numarasına sahip başka bir fiş vardır. Bu numaraya fiş kopyalayamazsınız!.." ), m_ui->lineEdit_yeni_fis_no  );

            return ADAK_FAIL_UNDO;
        }
    }
    return ADAK_OK;
}
void FAT_TOPLU_FATURALASTIR_ARAMA::SETUP_FORM()
{
    SQL_QUERY query ( DB );

    SET_HELP_PAGE( "fatura-islemleri_satis-toplu-irsaliye-faturalastirma" );
    SET_PAGE_TITLE( tr ( "FAT - TOPLU İRSALİYE FATURALAŞTIRMA" ) );

    SET_NAME_OF_RUN_BATCH_BUTTON    ( "Faturala" );

    REGISTER_TABLE_WIDGET           ( m_ui->tableWidget );
    REGISTER_ARAMA_BUTTONS_WIDGET   ( m_ui->widget_batch_buttons );

    SET_FIRST_FOCUS_WIDGET          ( m_ui->searchEdit_cari_hesap_kodu );

    REGISTER_SAVER_BUTTON           ( m_ui->toolButton_faturalastir );

    SET_FIRST_FOCUS_WIDGET          ( m_ui->adakDate_irs_baslangic_tarihi );

    //! default value
    m_ui->toolButton_faturalastir->setEnabled(  false );

    m_ui->checkBox_irsaliye_tarih_araligi->setChecked( true );
    m_ui->frame_irsaliye_tarih_araligi->setEnabled   ( true );

    m_ui->checkBox_fatura_tarihi->setEnabled( false );
    m_ui->frame_gruplar->setEnabled( false );
    m_ui->frame_cari_hesap_kodu->setEnabled( false );

    //! end

    m_sube_id  = SUBE_GET_SUBE_ID();

    if ( SUBE_GET_SUBE_ISLEM_YETKISI() EQ SADECE_UNITE_SUBESINDE ) {
      m_ui->frame_sube->setVisible( false );
      m_ui->checkBox_sube_kodu->setVisible( false );
    }
    else {
        QString sube_kodu, sube_adi;
        SUBE_GET_SUBE_KODU_ADI( m_sube_id, &sube_kodu, &sube_adi );

        m_ui->searchEdit_sube_kodu->SET_TEXT( sube_kodu) ;
        m_ui->lineEdit_sube_ismi->setText   ( sube_adi );
    }

    m_irs_faturalandirilacak_gun_sayisi = 0;

    query.PREPARE_SELECT ( "e9_sabit_degerler","irs_faturalandirilacak_gun" ,"sabit_deger_id = :sabit_deger_id" );
    query.SET_VALUE(":sabit_deger_id" , 1);

    if ( query.SELECT() > 0 ) {
        query.NEXT();
        m_irs_faturalandirilacak_gun_sayisi = query.VALUE(0).toInt();
    }

    int bas_tarihi_gunu = m_ui->adakDate_fatura_tarihi->QDATE().day() - m_irs_faturalandirilacak_gun_sayisi;

    if ( bas_tarihi_gunu > 0 ) {
        m_ui->adakDate_irs_baslangic_tarihi->SET_DATE(  QDate(m_ui->adakDate_fatura_tarihi->QDATE().year(),
                                                         m_ui->adakDate_fatura_tarihi->QDATE().month(),
                                                         bas_tarihi_gunu)  );
    }
    else {
        bas_tarihi_gunu += m_irs_faturalandirilacak_gun_sayisi;
        m_ui->adakDate_irs_baslangic_tarihi->SET_DATE( QDate ( m_ui->adakDate_fatura_tarihi->QDATE().year(),
                                                         m_ui->adakDate_fatura_tarihi->QDATE().month(),
                                                         bas_tarihi_gunu ) );
    }

    SET_HEADERS ( QStringList() <<tr("Fiş No")<<tr("Fiş Tarihi")<<tr("Cari Hesap Adı")<<tr("Fiş Tutarı") );
    SET_SORTING ( false );

    m_ui->tableWidget->setColumnWidth ( 0, 50  );
    m_ui->tableWidget->setColumnWidth ( 1, 100 );
    m_ui->tableWidget->setColumnWidth ( 2, 200 );
    m_ui->tableWidget->setColumnWidth ( 3, 100 );

    SET_ENTER_KEY_FOR_RUN_BATCH ( true );    
    SET_SETTING_NAME    ( "FAT_TOPLU_FATURALASTIR_ARAMA" );
}
int PRS_EK_ODENEK_VE_KESINTI_FISI::GET_FIS_RECORD ( int record_id )
{

    SQL_QUERY   sql_query(DB);
    SQL_QUERY   query    (DB);

    sql_query.PREPARE_SELECT( "prs_kesinti_odenek_tanimlar ",
                              "kes_ode_tanim_id, kesinti_odenek_adi, aciklama, "
                              "bordro_donemi_ay, bordro_donemi_yil, "
                              "ssk_kesintisi_iceriyor_mu, damga_vergisi_iceriyor_mu,"
                              "gelir_vergisi_iceriyor_mu, kesinti_odenek_tarihi,"
                              "yuzde_mi, tutar, kesinti_odenek_no, bordrosu_kesildi_mi ",
                              "kes_ode_tanim_id = :kes_ode_tanim_id   "
                              "AND kesinti_odenek_turu = :kesinti_odenek_turu ");

    sql_query.SET_VALUE( ":kes_ode_tanim_id", record_id );
    sql_query.SET_VALUE( ":kesinti_odenek_turu", m_fis_turu );

    if ( sql_query.SELECT() EQ 0 ) {
        return ADAK_FAIL;
    }

    sql_query.NEXT();

    m_odenek_kesinti_no     = sql_query.VALUE("kesinti_odenek_no").toInt();
    m_bordrosu_kesildi_mi   = sql_query.VALUE("bordrosu_kesildi_mi").toInt();

    m_ui->lineEdit_odenek_kesinti_adi->setText( sql_query.VALUE("kesinti_odenek_adi").toString() );

    m_ui->adakDate_odenek_kesinti_tarihi->SET_DATE( sql_query.VALUE("kesinti_odenek_tarihi").toString() );
    FIND_AND_SET_COMBOBOX_TEXT( m_ui->comboBox_bordro_donemi_ay, K9_GET_AYLAR_STRING( sql_query.VALUE("bordro_donemi_ay").toInt()));
    FIND_AND_SET_COMBOBOX_TEXT( m_ui->comboBox_bordro_donemi_yil, sql_query.VALUE("bordro_donemi_yil").toString() );

    FIND_AND_SET_COMBOBOX_TEXT( m_ui->comboBox_yuzde_mi, tr("TUTAR"));
    if ( sql_query.VALUE( "yuzde_mi").toInt() EQ PRS_YUZDE ) {
        FIND_AND_SET_COMBOBOX_TEXT( m_ui->comboBox_yuzde_mi, tr("YÜZDE"));
    }

    m_ui->commaEdit_tutar->SET_DOUBLE( sql_query.VALUE("tutar").toDouble());

    m_ui->checkBox_ssk_kesintisi->setChecked( sql_query.VALUE("ssk_kesintisi_iceriyor_mu").toInt() );
    m_ui->checkBox_gelir_vergisi_kesintisi->setChecked( sql_query.VALUE("gelir_vergisi_iceriyor_mu").toInt() );
    m_ui->checkBox_damga_vergisi_kesintisi->setChecked( sql_query.VALUE("damga_vergisi_iceriyor_mu").toInt() );


    query.PREPARE_SELECT ( "prs_ek_kesintiler_odenekler, prs_personeller",
                           "kesinti_odenek_id, prs_ek_kesintiler_odenekler.personel_id, cari_hesap_id, order_number ",
                           "prs_ek_kesintiler_odenekler.personel_id = prs_personeller.personel_id "
                           "AND kes_ode_tanim_id = :kes_ode_tanim_id ");

    query.SET_VALUE      ( ":kes_ode_tanim_id" , record_id );

    query.SELECT("order_number ASC" );

    while ( query.NEXT() EQ true ) {

        int p_current_row;

        p_current_row = ADD_NEW_LINE ();

        QSearchEdit * search_edit_persosnel_kodu     = ( QSearchEdit  * ) m_ui->table_widget->cellWidget ( p_current_row, PERSONEL_KODU );
        QLineEdit   * lineedit_personel_adi_soyadi   = ( QLineEdit    * ) m_ui->table_widget->cellWidget ( p_current_row, PERSONEL_AD_SOYAD );

        search_edit_persosnel_kodu->SET_TEXT( CARI_FIND_HESAP_KODU( query.VALUE("cari_hesap_id").toInt()));
        lineedit_personel_adi_soyadi->setText( CARI_FIND_HESAP_ISMI( query.VALUE("cari_hesap_id").toInt() ));

        QString id                                  = query.VALUE("kesinti_odenek_id").toString();
        QString order_number                        = query.VALUE("order_number").toString();

        QTableWidgetItem * new_item;

        new_item = new QTableWidgetItem(tr("%1").arg(id));
        m_ui->table_widget->setItem(p_current_row, ROW_ID_COLUMN, new_item);

        new_item = new QTableWidgetItem(tr("%1").arg(record_id));
        m_ui->table_widget->setItem(p_current_row, RECORD_ID_COLUMN, new_item);

        new_item = new QTableWidgetItem(tr("%1").arg(order_number));
        m_ui->table_widget->setItem(p_current_row, ORDER_NUMBER_COLUMN, new_item);

    }

    return ADAK_OK;
}
Example #8
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;

}
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();
}
void MUH_HESAP_EKSTRESI_BATCH::SETUP_FORM()
{
    SET_HELP_PAGE( "genel-muhasebe_hesap-ekstresi-muavin" );
    SET_PAGE_TITLE( tr ( "MUH - HESAP EKSTRESİ ( MUAVİN )" ) );

    REGISTER_BUTTON_WIDGET( m_ui->widget_batch_buttons );

    SET_SETTING_NAME( "MUH_HESAP_EKSTRESI_BATCH" );

    SET_NAME_OF_RUN_BATCH_BUTTON( tr ( "Rapor Al" ) );
    SET_ENTER_KEY_FOR_RUN_BATCH( true );

    m_ui->adakDate_baslangic_tarihi->SET_DATE( MALI_YIL_FIRST_DATE() );
    m_ui->adakDate_bitis_tarihi->SET_DATE( MALI_ARRAY_LAST_DATE() );

    m_ui->frame_sadece_ana_hesaplari_goster->setDisabled ( true );

    if ( E9_KULLANICI_SIRKET_DEGISTIRE_BILIR_MI() EQ EVET ) {
        m_ui->comboBox_sirket_turu->setVisible(true);
        m_ui->label_sirket_turu->setVisible(true);
        m_ui->frame_sirket->setVisible(true);
    }

    if (m_secili_hesap.isEmpty() EQ false) {
        m_ui->frame_tek_hesap->setEnabled(true);
        m_ui->checkbox_tek_hesap->setChecked(true);
        m_ui->frame_hesap_araligi->setEnabled(false);
        m_ui->checkbox_hesap_araligi->setChecked(false);
        m_ui->search_edit_tek_hesap_kodu->SET_TEXT(m_secili_hesap);
        SQL_QUERY query ( DB );

        query.PREPARE_SELECT("muh_hesaplar" , "hesap_ismi" , "tam_hesap_kodu = :tam_hesap_kodu");

        query.SET_VALUE      ( ":tam_hesap_kodu" , m_secili_hesap );

        if ( query.SELECT() EQ 0 ) {
            m_ui->search_edit_tek_hesap_kodu->SET_TEXT("");
        }
        else {
            query.NEXT();
            m_ui->lineedit_tek_hesap_ismi->setText(query.VALUE(0).toString());
        }
    }

    m_ui->checkbox_hesap_araligi->setChecked( false );
    m_ui->frame_hesap_araligi->setEnabled( false );

    m_ui->checkbox_tek_hesap->setChecked( true );
    // tum bakiler tek hesapta bunlar degıstırılmez
    m_ui->frame_bakiyesiz_hesaplar->setEnabled( false );
    m_ui->frame_calismamis_hesaplar->setEnabled( false );

    FIND_AND_SET_COMBOBOX_TEXT( m_ui->combo_box_bakiye, "Tüm Hesaplar");
    FIND_AND_SET_COMBOBOX_TEXT( m_ui->combo_box_islem, "Tüm Hesaplar");

    SQL_QUERY sql_query ( DB );

    sql_query.PREPARE_SELECT("e9_kullanici_yetkileri" , "hesap_ekstresi_nakli_yekun" ,
                             "kullanici_id = :kullanici_id");
    sql_query.SET_VALUE(":kullanici_id" , KULLANICI_ID());

    int nakli_yekun = 1;

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

        nakli_yekun = sql_query.VALUE(0).toInt();
    }

    m_ui->checkbox_nakli_yekun->setChecked(QVariant(nakli_yekun).toBool());

    if ( m_rapor_turu NE ENUM_MUH_HESAP_EKSTRESI ) {

        m_ui->checkbox_nakli_yekun->setChecked(true);
        m_ui->frame_bakiyesiz_hesaplar->setHidden(true);
        m_ui->frame_calismamis_hesaplar->setHidden(true);
        m_ui->frame_hesap_araligi->setHidden(true);
        m_ui->frame_nakli_yekun->setHidden(true);
        m_ui->frame_sadece_ana_hesaplari_goster->setHidden(true);
        m_ui->frame_tek_hesap->setHidden(true);

        m_ui->checkbox_ana_hesaplar->setHidden(true);
        m_ui->checkbox_hesap_araligi->setHidden(true);
        m_ui->checkbox_nakli_yekun->setHidden(true);
        m_ui->checkbox_tarih_araligi->setHidden(true);
        m_ui->checkbox_tek_hesap->setHidden(true);

        SET_PAGE_TITLE(QObject::tr( "KASA RAPORU" ) );
        SET_HELP_PAGE( "kasa-perakende_kasa-raporu" );

        if ( E9_KULLANICI_ENT_BILGILERINI_DEGISTIREBILIR_MI() EQ 1 ) {
            m_ui->checkbox_tek_hesap->setHidden(false);
            m_ui->frame_tek_hesap->setHidden(false);
        }
    }

    SET_FIRST_FOCUS_WIDGET(m_ui->search_edit_tek_hesap_kodu);

    FOCUS_FIRST_WIDGET();
}
Example #11
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;

}
Example #12
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;
}
Example #13
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;

}
Example #14
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();

    }

}
Example #15
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();
}