// Copyright (c) 2003,2004,2005 Juraj Kolesár #include "lt.h" /* data init {{{ **************************************************************/ int lt_s_item_data_init(T_ITEM *item) { register int i; for (i=0;i<__LT_S_ITEM_PARAM_COUNT;i++) item->status[i] = false; SET_CELL(item->pk, "", "pk_s_items", 0); SET_CELL(item->number, "", "number", 10); SET_CELL(item->name, "", "name", 20); SET_CELL(item->code, "", "code", __LT_S_ITEM_WIDTH_CODE); SET_CELL(item->messure, "", "messure", __LT_S_ITEM_WIDTH_MESSURE); SET_CELL(item->price, "", "price", 10); return(__LT_OK); } /* }}} */ /* data clear {{{ *************************************************************/ int lt_s_item_data_clear(T_ITEM *item) { register int i; item->pk.value[0] = '\0'; item->number.value[0] = '\0'; item->name.value[0] = '\0'; item->code.value[0] = '\0'; item->messure.value[0] = '\0'; item->price.value[0] = '\0'; for (i=0;i<__LT_S_ITEM_PARAM_COUNT;i++) item->status[i] = false; return(__LT_OK); } /* }}} */ /* data get {{{ ***************************************************************/ int lt_s_item_data_get(T_DB *tdb, T_ITEM *item) { if (!(item->status[__LT_S_ITEM_NAME])) { tdb_query_cell(tdb, item->name.value, g_strdup_printf( "SELECT name FROM s_items WHERE pk_s_items='%s'", item->pk.value)); item->status[__LT_S_ITEM_NAME] = true; } if (!(item->status[__LT_S_ITEM_NUMBER])) { tdb_query_cell(tdb, item->number.value, g_strdup_printf( "SELECT number FROM s_items WHERE pk_s_items='%s'", item->pk.value)); item->status[__LT_S_ITEM_NUMBER] = true; } if (!(item->status[__LT_S_ITEM_CODE])) { tdb_query_cell(tdb, item->code.value, g_strdup_printf( "SELECT pk_s_codes " "FROM s_codes " "INNER JOIN s_items " "ON pk_s_codes=fk_s_codes " "WHERE pk_s_items='%s'", item->pk.value)); tdb_query_cell(tdb, item->code.name, g_strdup_printf( "SELECT code " "FROM s_codes " "INNER JOIN s_items " "ON pk_s_codes=fk_s_codes " "WHERE pk_s_items='%s'", item->pk.value)); item->status[__LT_S_ITEM_CODE] = true; } if (!(item->status[__LT_S_ITEM_MESSURE])) { tdb_query_cell(tdb, item->messure.value, g_strdup_printf( "SELECT pk_s_messures " "FROM s_messures " "INNER JOIN s_items " "ON pk_s_messures=fk_s_messures " "WHERE pk_s_items='%s'", item->pk.value)); tdb_query_cell(tdb, item->messure.name, g_strdup_printf( "SELECT messure " "FROM s_messures " "INNER JOIN s_items " "ON pk_s_messures=fk_s_messures " "WHERE pk_s_items='%s'", item->pk.value)); item->status[__LT_S_ITEM_CODE] = true; } if (!(item->status[__LT_S_ITEM_PRICE])) { tdb_query_cell(tdb, item->price.value, g_strdup_printf( "SELECT price " "FROM s_add " "WHERE fk_s_items='%s' " "ORDER BY pk_s_add DESC", item->pk.value)); item->status[__LT_S_ITEM_PRICE] = true; } return(__LT_OK); } /* }}} */ /* data set {{{ ***************************************************************/ int lt_s_item_data_set(T_DB *tdb, T_ITEM *item) { if (!(item->status[__LT_S_ITEM_PK])) { tdb_query(tdb, g_strdup_printf( "INSERT INTO s_items (number, name, fk_s_codes, fk_s_messures) " "VALUES ('%s', '%s', '%s', '%s')", item->number.value, item->name.value, item->code.value, item->messure.value)); tdb_query_lastid(tdb, item->pk.value); item->status[__LT_S_ITEM_PK] = true; item->status[__LT_S_ITEM_NUMBER] = true; item->status[__LT_S_ITEM_NAME] = true; item->status[__LT_S_ITEM_CODE] = true; item->status[__LT_S_ITEM_MESSURE] = true; } return(__LT_OK); } /* }}} */ /* data remove {{{ ************************************************************/ int lt_s_item_data_remove(T_DB *tdb, T_ITEM *item) { tdb_query(tdb, g_strdup_printf( "DELETE FROM s_items WHERE pk_s_items='%s'", item->pk.value) ); return(__LT_OK); } /* }}} */ /* next number {{{ ************************************************************/ int lt_s_item_next_number(T_DB *tdb, T_ITEM *item) { tdb_query_cell(tdb, item->number.value, "SELECT MAX(number) FROM s_items"); str_inc(item->number.value); item->status[__LT_S_ITEM_NUMBER] = true; item->status[__LT_S_ITEM_NAME] = true; item->status[__LT_S_ITEM_CODE] = true; item->status[__LT_S_ITEM_MESSURE] = true; return(__LT_OK); } /* }}} */ /* qs init {{{ ****************************************************************/ int lt_s_item_qs_init(T_ITEM *item, T_COLS **cols, T_QS *qs) { *cols = g_slist_append(*cols, &(item->pk)); *cols = g_slist_append(*cols, &(item->number)); *cols = g_slist_append(*cols, &(item->code)); *cols = g_slist_append(*cols, &(item->name)); if (strlen(qs->columns) == 0) tdb_qs_set_columns(qs, *cols); if (strlen(qs->from) == 0) strcpy(qs->from, "s_items INNER JOIN s_codes ON fk_s_codes=pk_s_codes"); return(__LT_OK); } /* }}} */ /* qs overview {{{ ************************************************************/ int lt_s_item_qs_overview(T_QS *qs) { strcpy(qs->columns, "pk_s_items, number, code, name, sum(count)"); strcpy(qs->from, "s_add " "INNER JOIN s_items ON pk_s_items=fk_s_items " "INNER JOIN s_codes ON fk_s_codes=pk_s_codes"); strcpy(qs->group, "pk_s_items"); return(__LT_OK); } /* }}} */ /* get codes {{{ **************************************************************/ int lt_s_item_get_codes(T_DB *tdb, T_MATRIX *matrix) { tdb_table_fill(tdb, matrix, "SELECT pk_s_codes, code FROM s_codes ORDER BY code"); return(__LT_OK); } /* }}} */ /* get messures {{{ ***********************************************************/ int lt_s_item_get_messures(T_DB *tdb, T_MATRIX *matrix) { tdb_table_fill(tdb, matrix, "SELECT pk_s_messures, messure FROM s_messures"); return(__LT_OK); } /* }}} */ /* new code {{{ **************************************************************/ int lt_s_item_new_code(T_DB *tdb, T_ITEM *item) { tdb_query(tdb, g_strdup_printf( "INSERT INTO s_codes (code) VALUES ('%s')", item->code.name)); tdb_query_lastid(tdb, item->code.value); return(__LT_OK); } /* }}} */ /* new messure {{{ **************************************************************/ int lt_s_item_new_messure(T_DB *tdb, T_ITEM *item) { tdb_query(tdb, g_strdup_printf( "INSERT INTO s_messures (messure) VALUES ('%s')", item->messure.name)); tdb_query_lastid(tdb, item->messure.value); return(__LT_OK); } /* }}} */