module Handler.SupplierActions where import Import import Handler.Common import qualified Data.Text as T import Text.Blaze getSupplierActionsR :: SupplierId -> Handler Html getSupplierActionsR sId = do mSup <- runDB $ get sId case mSup of Just sup -> defaultLayout $ $(widgetFile "supplierActions") Nothing -> do setMessageI MsgSupplierUnknown redirect SupplierR data BevDigest = BevDigest { bdCrates :: Int , bdTotal :: Int , bdBev :: Beverage } getSupplierDigestR :: SupplierId -> Handler Html getSupplierDigestR sId = do mSup <- runDB $ get sId case mSup of Just sup -> do master <- getYesod bevs <- runDB $ selectList [BeverageSupplier ==. (Just sId)] [Asc BeverageIdent] digests <- return $ map genBevDigest bevs w <- return $ [whamlet|$newline always
#{supplierIdent sup}
#{unTextarea $ supplierAddress sup}
#{supplierTel sup}
#{supplierEmail sup}
_{MsgCustomerId}: #{supplierCustomerId sup}
_{MsgArtNr}
_{MsgName}
_{MsgVolume}
_{MsgCrateCount}
_{MsgPricePerCrate}
_{MsgTotalValue}
$forall dig <- digests
$if bdCrates dig /= 0
#{fromMaybe "" $ beverageArtNr $ bdBev dig}
#{beverageIdent $ bdBev dig}
#{formatIntVolume $ beverageMl $ bdBev dig}
#{T.pack $ show $ bdCrates dig}
#{formatIntCurrency $ fromMaybe 0 $ beveragePricePerCrate $ bdBev dig} #{appCurrency $ appSettings master}
#{formatIntCurrency $ bdTotal dig} #{appCurrency $ appSettings master}
_{MsgTotalCrates}
#{T.pack $ show $ sum $ map bdCrates digests}
_{MsgBuyValue}
#{formatIntCurrency $ sum $ map bdTotal digests} #{appCurrency $ appSettings master}
|]
tableLayout w
Nothing -> do
setMessageI MsgSupplierUnknown
redirect SupplierR
-- tableLayout :: Widget -> WidgetT site0 IO ()
tableLayout :: WidgetT App IO () -> HandlerT App IO Markup
tableLayout widget = do
cont <- widgetToPageContent $ do
$(combineStylesheets 'StaticR
[ css_bootstrap_css
, css_main_css
])
widget
withUrlRenderer [hamlet|$newline never
$doctype 5
^{pageHead cont}
^{pageBody cont}
|]
genBevDigest :: Entity Beverage -> BevDigest
genBevDigest bev =
BevDigest amount (amount * (fromMaybe 0 $ beveragePricePerCrate $ entityVal bev)) (entityVal bev)
where
amount =
if ((beverageMaxAmount (entityVal bev) - beverageAmount (entityVal bev)) `div` (fromMaybe 1 $ beveragePerCrate (entityVal bev))) < 0
then
0
else
((beverageMaxAmount (entityVal bev) - beverageAmount (entityVal bev)) `div` (fromMaybe 1 $ beveragePerCrate (entityVal bev)))
getDeleteSupplierR :: SupplierId -> Handler Html
getDeleteSupplierR sId = do
mSup <- runDB $ get sId
case mSup of
Just _ -> do
a <- runDB $ selectList [BeverageSupplier ==. (Just sId)] []
if null a
then do
runDB $ delete sId
setMessageI MsgSupplierDeleted
redirect SupplierR
else do
setMessageI MsgSupplierInUseError
redirect SupplierR
Nothing -> do
setMessageI MsgSupplierUnknown
redirect SupplierR