---
title: "Inventory Valuation"
author: "Senda Athletics"
date: "`r Sys.Date()`"
output: 
  html_notebook:
    toc: yes
    toc_float:
      collapsed: true
    theme: cerulean  
    highlight: tango
---


```{r, echo=FALSE, warning=FALSE, message=FALSE}
rm(list = ls())

# THEMES: flatly, cerulean, united, cosmo

library(DT)
library(dplyr)
library(lubridate)
library(highcharter)

# run de data process
df <- readRDS('USA_details.rds')
df_it <- readRDS('IT_details.rds')
df_oo <- readRDS('OO_details.rds')
df_cny <- readRDS('CNY_details.rds')
landed_cost <- readRDS('landed_cost_data.rds')

# get the last month available
processing_date <- '2026-03-01'
processing_date <- as.Date(processing_date)

```

```{r, echo=FALSE, warning=FALSE, message=FALSE}

# CREATE ALL THE SUMMARY DF

# USA Stock
USA_sum <- df %>%
  filter(Year>2024) %>%
  group_by(Class="USA",Year,Month,Category) %>%
  summarise(
    stock = sum(quantity),
    monthly_valuation_1 = sum(stock_val_land, na.rm = TRUE),
    avg_val = weighted.mean(landed_cost,quantity, na.rm = TRUE))


# In Transit Stock - valuated at FOB
IT_sum <- df_it %>%
  filter(Year>2024) %>%
  group_by(Class="In Transit",Year,Month,Category) %>%
  summarise(
    stock = sum(quantity),
    monthly_valuation_1 = sum(stock_val_fob, na.rm = TRUE),
    avg_val = weighted.mean(fob,quantity, na.rm = TRUE))

# Open Order Stock - valuated at FOB
OO_sum <- df_oo %>%
  group_by(Class="Open Orders",Year,Month,Category) %>%
  summarise(
    stock = sum(quantity),
    monthly_valuation_1 = sum(stock_val_fob, na.rm = TRUE),
    avg_val = weighted.mean(fob,quantity, na.rm = TRUE)
    )


# OO_detail$fob <- case_when(str_detect(OO_detail$SKU,'SFT9100') ~ 28.26+1.2,
#                            str_detect(OO_detail$SKU,'SFT9200') ~ 28.67+1.2,
#                            TRUE ~ OO_detail$fob
#                            )
# 
# OO_detail$val_fob <- case_when(str_detect(OO_detail$SKU,'SFT9100') ~ OO_detail$fob*OO_detail$quantity_ordered,
#                            str_detect(OO_detail$SKU,'SFT9200') ~ OO_detail$fob*OO_detail$quantity_ordered,
#                            TRUE ~ OO_detail$val_fob
#                            )

# OO_detail$fob[OO_detail$SKU=='SFT1025-5OR'] <- 24
# OO_detail$val_fob[OO_detail$SKU=='SFT1025-5OR'] <- OO_detail$quantity_ordered[OO_detail$SKU=='SFT1025-5OR']*OO_detail$fob[OO_detail$SKU=='SFT1025-5OR']
 

# China Stock
CNY_sum <- df_cny %>%
  group_by(Class="China",Year,Month,Category) %>%
  summarise(
    stock = sum(quantity),
    monthly_valuation_1 = sum(stock_val_fob, na.rm = TRUE),
    avg_val = weighted.mean(fob,quantity, na.rm = TRUE)
    )

LM_sum <- bind_rows(USA_sum %>% filter(Year==year(processing_date) & Month==month(processing_date)),
                    IT_sum  %>% filter(Year==year(processing_date) & Month==month(processing_date)),
                    OO_sum  %>% filter(Year==year(processing_date) & Month==month(processing_date)),
                    CNY_sum %>% filter(Year==year(processing_date) & Month==month(processing_date)))

All_sum <- bind_rows(USA_sum,IT_sum,OO_sum,CNY_sum)
All_details <- bind_rows(df,
                         df_it,
                         df_oo,
                         df_cny)

```


## Monthly Report {.tabset}

### Current

```{r, echo=FALSE, warning=FALSE, message=FALSE}

tab_total_1 <- bind_rows(LM_sum %>% 
                           group_by(Class,Year,Month) %>%
                           summarise(stock = sum(stock),
                                     monthly_valuation_1 = sum(monthly_valuation_1)),
                         LM_sum %>%
                          group_by(Year,Month) %>%
                           summarise(stock = sum(stock),
                                     monthly_valuation_1 = sum(monthly_valuation_1))
                          )

tab_total_1$Class <- ifelse(is.na(tab_total_1$Class),"Total",tab_total_1$Class)

datatable(
 tab_total_1,
  rownames = F,
  extensions = 'Buttons',
  colnames = c("Category","Year","Month","Stock","Valuation"),
  options = list(
    dom = 'Bt',
    buttons = c('excel'),
    autoWidth = TRUE)
) %>%
  #formatStyle(c("date","dategory","total_stock","total_value"),fontWeight = 'bold') %>%
  formatRound('stock',digits = 0) %>%
  formatCurrency('monthly_valuation_1',digits = 2)

```

### All

```{r, echo=FALSE, warning=FALSE, message=FALSE}

tab_total_1 <- All_sum %>% 
  group_by(Year,Month) %>%
  summarise(stock = sum(stock),
            monthly_valuation_1 = sum(monthly_valuation_1)) %>%
  arrange(Year,Month)

datatable(
 tab_total_1,
  rownames = F,
  extensions = 'Buttons',
  colnames = c("Year","Month","Stock","Valuation"),
  options = list(
    dom = 'Bt',
    pageLength = 20,
    buttons = c('excel'),
    autoWidth = TRUE)
) %>%
  #formatStyle(c("date","dategory","total_stock","total_value"),fontWeight = 'bold') %>%
  formatRound('stock',digits = 0) %>%
  formatCurrency('monthly_valuation_1',digits = 2)


```
  
## Monthly by Category {.tabset}

### USA

```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 USA_sum %>% filter(Year==year(processing_date) & Month==month(processing_date)),
  rownames = F,
  colnames = c("Class","Category","Year","Month","Stock","Valuation (LC)",'Avg Landed Cost'),
  options = list(
    dom = 't',
    autoWidth = TRUE)
) %>%
  formatRound('stock',digits = 0) %>%
  formatCurrency(c('monthly_valuation_1','avg_val'),digits = 2)

```


### In Transit

```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 IT_sum %>% filter(Year==year(processing_date) & Month==month(processing_date)),
  rownames = F,
  colnames = c("Class","Category","Year","Month","Stock","Valuation (LC)",'Avg Landed Cost'),
  options = list(
    dom = 't',
    autoWidth = TRUE)
) %>%
  formatRound('stock',digits = 0) %>%
  formatCurrency(c('monthly_valuation_1','avg_val'),digits = 2)

```


### Open Orders

```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 OO_sum %>% filter(Year==year(processing_date) & Month==month(processing_date)),
  rownames = F,
  colnames = c("Class","Category","Year","Month","Stock","Valuation (LC)",'Avg Landed Cost'),
  options = list(
    dom = 't',
    autoWidth = TRUE)
) %>%
  formatRound('stock',digits = 0) %>%
  formatCurrency(c('monthly_valuation_1','avg_val'),digits = 2)
```


### China

```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 CNY_sum %>% filter(Year==year(processing_date) & Month==month(processing_date)),
  rownames = F,
  colnames = c("Class","Category","Year","Month","Stock","Valuation (LC)",'Avg Landed Cost'),
  options = list(
    dom = 't',
    autoWidth = TRUE)
) %>%
  formatRound('stock',digits = 0) %>%
  formatCurrency(c('monthly_valuation_1','avg_val'),digits = 2)
```

## Details {.tabset}

### USA
```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 df %>% mutate(Year = factor(Year),Month = factor(Month)),
  rownames = F,
  filter = 'top',
  colnames = c("SKU","Year","Month","Category","SubCategory","Name","Color","Size","Stock","Landed Cost","Valuation (LC)"),
  options = list(
    pageLength = 15,
    #autoWidth = TRUE,
    columnDefs = list(
      list(width = '300px', targets = c('Name','Size'))
    )
    )) %>%
  formatRound('quantity',digits = 0) %>%
  formatCurrency(c('landed_cost','stock_val_land'),digits = 2) %>%
  formatStyle(c(1,2,3,4,5,6,7,8,9,10,11),fontSize = '10pt')


```

### In Transit
```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 df_it %>% mutate(Year = factor(Year),Month = factor(Month)),
  rownames = F,
  filter = 'top',
  colnames = c("SKU","Year","Month","Category","SubCategory","Name","Color","Size","Stock","FOB","Valuation (FOB)"),
  options = list(
    pageLength = 15,
    autoWidth = TRUE)
) %>%
  formatRound('quantity',digits = 0) %>%
  formatCurrency(c('fob','stock_val_fob'),digits = 2)



```



### Open Orders

```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 df_oo %>% mutate(Year = factor(Year),Month = factor(Month)),
  rownames = F,
  filter = 'top',
  colnames = c("SKU","Year","Month","Category","SubCategory","Name","Color","Size","Stock","FOB","Valuation (FOB)"),
  options = list(
    pageLength = 15,
    autoWidth = TRUE)
) %>%
  formatRound('quantity',digits = 0) %>%
  formatCurrency(c('fob','stock_val_fob'),digits = 2)



```

### China

```{r, echo=FALSE, warning=FALSE, message=FALSE}

datatable(
 df_cny %>% mutate(Year = factor(Year),Month = factor(Month)),
  rownames = F,
  filter = 'top',
  colnames = c("SKU","Year","Month","Category","SubCategory","Name","Color","Size","Stock","FOB","Valuation (FOB)"),
  options = list(
    pageLength = 15,
    autoWidth = TRUE)
) %>%
  formatRound('quantity',digits = 0) %>%
  formatCurrency(c('fob','stock_val_fob'),digits = 2)



```