#!/bin/bash ?vx
# tensho-tenkai >>> 店舗商品マスタ展開出力
# Usage : tensho-tenkai -d <yyyymmdd> -g <MD業務グループ> \
# -s <商品コード>/-S <商品リスト> [ -t <店舗コード> / -T <店舗リスト> ] [-i]
<中略>
#/////////////////////////////////////////////////////////////////////////
#
# ステップ1:適用日の売価項目マスタのトランと、個店売価項目マスタのトランから、
# 店舗商品売価項目のトランを生成する
#
# ステップ2:適用日の原価マスタのトランから、店舗商品原価項目のトランを生成する
#
# ステップ3:店舗商品売価項目のトランと店舗商品原価項目のトランを連結する
#
#/////////////////////////////////////////////////////////////////////////
#/////////////////////////////////////////////////////////////////////////
# ステップ2:予約のある適用日毎に原価マスタのトランから、店舗商品原価項目のトランを生成する
#/////////////////////////////////////////////////////////////////////////
<中略>
# 発注項目マスタ 予約ファイル
#
# 個店
echo ${hacd}/TBL/SABUN/HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU.?????????????? |
# 1:商品コード* 2:店舗グループコード*("_"固定) 3:店舗コード* 4:予約コード
# 5:基本フラグ 6:発注先コード 7:原価(税抜) 8:原価(税込)
# 9:発注単位数 10:最大発注数 11:発注開始日 12:返品不可区分
# 13:発注終了日 14:発注停止理由 15:備考 16:登録日
# 17:更新フラグ 18:適用日 19:ユーザID 20:入力日時
ugrep -v '\?' |
xargs cat |
cjoin0 key=1 $tmp-shohin - |
cjoin0 key=3 $tmp-ten - |
gawk '$18<="'$sday'"' |
msort key=1/3@18@20@17 > $tmp-hachukoten.m${mdg}.input
join0 key=1 $tmp-shohin ${hacd}/TBL/SABUN/HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU |
cjoin0 key=3 $tmp-ten - |
gawk '$18<="'$sday'"' |
up3 key=1/3@18@20@17 - $tmp-hachukoten.m${mdg}.input |
join0 key=1 $tmp-shohin - |
underlay num=3 |
self 1/NF > $tmp-HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU
yoyaku_genka_koten=$tmp-HACHU_KOUMOKU_KOTEN.M${mdg}.YOYAKU
# 発注項目マスタ 個店設定
if [ -s ${hacd}/TBL/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI ]; then
if [ -s $tmp-shohin ] ; then
if [ "$(gyo $tmp-ten)" -ge 300 -a "$(gyo $tmp-shohin)" -ge 5000 ] ; then
# 商品数・店舗数がともに多い場合は一括ファイルを使用する
join0 key=1 $tmp-shohin ${hacd}/TBL/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI |
cjoin0 key=3 $tmp-ten -
else
# 店舗コードのリストをだす
lineup 1 $tmp-ten > $tmp-ten.list
# 商品下3桁コードのリストをだす
self 1.10.4 $tmp-shohin | lineup 1 > $tmp-jan.list
# 対象商品から該当するファイルを集める
#
# 店舗コード指定があるなしでLV3個店マスタの参照先が異なる。
# ==> 店舗コード指定があると店舗別LV3を参照
# ==> 店舗コード指定がなしと商品別LV3を参照
#
# 店舗数が商品数より少ない場合
if [ "$(gyo $tmp-ten)" -lt 80 -a "$(gyo $tmp-shohin | calc '$1*2' 1 | self 2)" -ge "$(gyo $tmp-ten)" ] ; then
for tencd in $(cat $tmp-ten.list); do
[ ! -s ${hacd}/TBL/TENPO/$tencd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI ] && continue
echo "${hacd}/TBL/TENPO/$tencd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI"
done > ${tmp}-hachu_koten_list
# 商品数が店舗数より少ない場合
else
for jancd in $(cat $tmp-jan.list); do
[ ! -s ${hacd}/TBL/SHOHN/$jancd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI ] && continue
echo "${hacd}/TBL/SHOHN/$jancd/HACHU_KOUMOKU_KOTEN.M${mdg}.RIREKI"
done > ${tmp}-hachu_koten_list
fi
# 並列数
paranum=2
for fl in $(cat ${tmp}-hachu_koten_list) ;do
[ ! -s ${fl} ] && continue
echo ${fl}
done |
eval distribute ${tmp}-script.{1..$paranum}
for n in $(seq $paranum); do
echo "echo $(tateyoko ${tmp}-script.$n) | xargs cat | cjoin0 key=1 $tmp-shohin - | cjoin0 key=3 $tmp-ten - > $tmp-scr.out.$n" | ush -e &
done
wait
echo $tmp-scr.out.* |
xargs cat |
cjoin0 key=1 $tmp-shohin - |
cjoin0 key=3 $tmp-ten - |
msort key=1/3@18@20@17 -
fi
else
cat /dev/null
fi |
if [ -s ${yoyaku_genka_koten} ]; then
# ---underlay対応---
#gawk '$(NF-2)<="'${sday}'"' > $tmp-hachu_koten_rireki
cat > $tmp-hachu_koten_rireki
up3 key=1/3@18@20@17 $tmp-hachu_koten_rireki ${yoyaku_genka_koten} |
underlay num=3 - |
self 1/NF > $tmp-hachu_koten_yoyaku.all
up3 key=1/3@18@20@17 $tmp-hachu_koten_rireki $tmp-hachu_koten_yoyaku.all
# ---underlay対応---
else
cat -
fi |
cjoin0 key=3 $tmp-ten |
uawk '$(NF-2)<="'${sday}'"' |
getlast key=1/3 |
'$(NF-3)!=8' > $tmp-kotengenka
# 1:商品コード* 2:店舗グループコード* 3:店舗コード* 4:予約コード
# 5:基本フラグ 6:発注先コード 7:原価(税抜) 8:原価(税込)
# 9:発注単位数 10:最大発注数 11:発注開始日 12:返品不可区分
# 13:発注終了日 14:発注停止理由 15:備考 16:登録日
# 17:更新フラグ 18:適用日 19:入力者 20:入力日時
fi
itouch '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _' $tmp-kotengenka
# 個店設定の店展開
# $tmp-kotengenka
# 1:商品コード* 2:店舗グループコード* 3:店舗コード* 4:予約コード
# 5:基本フラグ 6:発注先コード 7:原価(税抜) 8:原価(税込)
# 9:発注単位数 10:最大発注数 11:発注開始日 12:返品不可区分
# 13:発注終了日 14:発注停止理由 15:備考 16:登録日
# 17:更新フラグ 18:適用日 19:入力者 20:入力日時
self 1 3 7 8 6 11 13 14 9 10 12 15 17 18 19 20 $tmp-kotengenka > $tmp-kotengenka-data
# 1:商品コード* 2:店舗コード* 3:原価(税抜) 4:原価(税込)
# 5:発注先コード 6:発注開始日 7:発注終了日 8:発注停止理由
# 9:発注単位数 10:最大発注数 11:返品不可区分 12:備考
# 13:更新フラグ 14:適用日 15:入力者 16:入力日時
#/////////////////////////////////////////////////////////////////////////
# ステップ3:店舗商品売価項目の未来履歴トランと店舗商品原価項目の未来履歴トランを連結する
#/////////////////////////////////////////////////////////////////////////
<中略>
#/////////////////////////////////////////////////////////////////////////
# 終了処理
#/////////////////////////////////////////////////////////////////////////
rm -rf $TMPD &
exit 0