// Copyright (c) 2003,2004,2005 Juraj Kolesár <koli@koli.sk>
#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);
}
/* }}} */
Platon Group <platon@platon.sk> http://platon.sk/
|