0

Joomla の拡張機能 Virtuemart 1.1.9 と joomla 1.5 を使用して、ショッピング カートを作成しています。別のコンポーネントの助けを借りて、製品 ID と数量を含むプレーン テキスト ファイルをサーバーにアップロードできます。次のルーチンを使用して、カートへの積み込みをまとめることができます。

この方法の問題点は、注文を進めたときに、商品の価格が注文した数量と乗算されず、注文の合計が得られないことです。

何か案は?

ここにコードがあります

DECLARE done INT DEFAULT 0;
declare producto, cantidad, cliente, carga, categoria int;
declare cantidadreg, cuenta, i int default 0;
declare cadena text default "";
declare varcarga int default 0;

declare cur1 cursor for select jos_vm_product.product_id, cant_producto, id_cliente, datos_cargas_vm.id_carga, category_id
from datos_cargas_vm inner join cargas_vm on datos_cargas_vm.id_carga=cargas_vm.id_carga
inner join jos_vm_product on datos_cargas_vm.id_producto=jos_vm_product.product_sku
inner join jos_vm_product_category_xref on jos_vm_product.product_id = jos_vm_product_category_xref.product_id
where estado_carga='P'
order by datos_cargas_vm.id_carga, jos_vm_product.product_id;

declare continue handler for not found set done = true;

open cur1;

read_loop: LOOP
    fetch cur1 into producto, cantidad, cliente, carga, categoria;

    if done then
        leave read_loop;
    end if;

    if varcarga!=carga then
        select count(*) into cantidadreg from datos_cargas_vm inner join cargas_vm on datos_cargas_vm.id_carga=cargas_vm.id_carga
        inner join jos_vm_product on datos_cargas_vm.id_producto=jos_vm_product.product_sku
        inner join jos_vm_product_category_xref on jos_vm_product.product_id = jos_vm_product_category_xref.product_id
        where estado_carga='P' and datos_cargas_vm.id_carga=carga;

        set varcarga:=carga;
        set cadena:=concat("a:",cast(cantidadreg+1 as char),":{s:3:\"idx\";i:",cast(cantidadreg as char),";");
        set i:=0;
    end if;

    set cadena:=concat(cadena,"i:",cast(i as char),";a:5:{s:8:\"quantity\";i:",cast(cantidad as char),
        ";s:10:\"product_id\";s:5:\"",cast(producto as char),"\";s:9:\"parent_id\";i:",cast(producto as char),
        ";s:11:\"category_id\";i:",cast(categoria as char),";s:11:\"description\";s:0:\"\";}");
    set i:=i+1;

    if i=cantidadreg then
        set cadena:=concat(cadena,"}");
        -- select cantidadreg,cadena;

        select count(*) into cantidadreg from jos_vm_cart where user_id = cliente;

        if cantidadreg=0 then
            insert into jos_vm_cart(user_id,cart_content) values(cliente,cadena);
        else
            update jos_vm_cart set cart_content=cadena where user_id=cliente;
        end if;
        update cargas_vm set estado_carga='C' where id_carga=carga;
    end if;
END LOOP;

close cur1;
4

1 に答える 1

0

カートをロードするためにすべてのvirtuemartロジックをバイパスする場合は、カートをエミュレートし、ロードと同時に計算を実行する必要があります。

于 2012-07-30T22:17:19.370 に答える