仓库管理系统19--盘存管理

原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现 

 

1、什么是盘存

盘存也叫盘库,盘库是指对一个仓库、库房或者商店的库存进行全面清点和核对的过程。在盘库过程中,通常会统计和记录每个物品的数量、规格、型号等详细信息,并与实际库存进行比对,以确保库存的准确性和完整性。盘库的目的是为了及时了解库存的实际情况,包括有多少物品、物品的种类和数量等,以便进行后续的采购、销售和管理决策。盘库可以帮助企业避免物品丢失、滞销或者过期,提高库存管理的效率和准确性。

主要的盘点库存的方式有以下几种:

1. 手工盘点:通过人工逐一计数库存物品的数量,然后记录在纸质或电子表格中。这种方式需要耗费大量时间和人力,容易出错但成本较低。

2. 标记盘点:为每个库存物品贴上唯一的标签或条码,然后使用手持设备扫描标签进行盘点。这种方式减少了计数的错误率,提高了工作效率。

3. 周期盘点:按照一定的周期(如每周、每月或每季度)对库存进行盘点。周期盘点可以帮助及时发现和纠正库存差异,控制库存变动。

4. 循环盘点:将库存按照一定的规则分成若干个区域,每次只盘点其中的一部分区域,循环进行。这种方式可以分散盘点工作的压力,减少盘点所需时间。

5. RFID盘点:利用无线射频识别技术,通过读取物品上的RFID标签来实时盘点库存。这种方式可以实现快速自动化的盘点,减少人工干预。

6. 财务盘点:根据财务报表和账目记录来盘点库存。这种方式主要用于财务目的,验证账面库存与实际库存是否一致。

2、添加用户控件 

 

<UserControl x:Class="West.StoreMgr.View.InventoryView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:West.StoreMgr.View"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             mc:Ignorable="d" 
             DataContext="{Binding Source={StaticResource Locator},Path=Inventory}"
             d:DesignHeight="450" d:DesignWidth="800">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding LoadCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <!--标题-->
        <StackPanel Background="#EDF0F6" Orientation="Horizontal">
            <TextBlock Margin="10 0 0 0" Text="&#xf015;" FontSize="20" FontFamily="/Fonts/#FontAwesome" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#797672"/>
            <TextBlock Margin="10 0 0 0" Text="首页 > 物资盘库" FontSize="20" FontFamily="/Fonts/#FontAwesome" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#797672"/>
        </StackPanel>

        <!--增加-->
        <Grid Grid.Row="1" Margin="20">
            <Button  Height="36" Width="199"  FontSize="20"
                        Content="开始盘存" Style="{StaticResource ButtonStyle}" 
                        CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:InventoryView}}"
                        Command="{Binding AddCommand}"/>
        </Grid>

        <!--浏览-->
        <Grid Grid.Row="2" Margin="10 0 10 10">
            <DataGrid ItemsSource="{Binding InventoryList}" CanUserDeleteRows="False" CanUserAddRows="False" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="序号" Binding="{Binding GoodsSerial}"/>
                    <DataGridTextColumn Header="名称" Binding="{Binding Name}"/>
                    <DataGridTextColumn Header="库存数量" Binding="{Binding Quant}"/>
                    <DataGridTextColumn Header="物资类别" Binding="{Binding GoodsTypeName}"/>
                    <DataGridTextColumn Header="物资规格" Binding="{Binding SpecName}"/>
                    <DataGridTextColumn Header="操作人员" Binding="{Binding UserInfoName}"/>
                    <DataGridTextColumn Header="盘存日期" Binding="{Binding InsertDate}"/>
                    <DataGridTemplateColumn  Header="操作">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Button Content="编辑" 
                                            Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:GoodsView},Path=DataContext.EditCommand}"
                                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}}" 
                                            Tag="{Binding}" 
                                            Style="{StaticResource DataGridButtonStyle}" />
                                    <Button Content="删除" 
                                            Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:GoodsView},Path=DataContext.DeleteCommand}"
                                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}}"
                                            Tag="{Binding}" 
                                            Style="{StaticResource DataGridButtonStyle}" />
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Grid>
</UserControl>

3、添加viewmodel

using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using West.StoreMgr.View;
using West.StoreMgr.Service; 
using West.StoreMgr.Helper;

namespace West.StoreMgr.ViewModel
{
    /// <summary>
    /// 盘库viewmodel
    /// </summary>
    public class InventoryViewModel : ViewModelBase
    {

        //添加盘存记录
        public RelayCommand<UserControl> AddCommand
        {
            get
            {
                var command = new RelayCommand<UserControl>((obj) =>
                {
                    if (!(obj is InventoryView view)) return;
                    var GoodsList = new GoodsService().Select();
                    var inventoryService = new InventoryService();
                    foreach (var item in GoodsList)
                    {
                        var inventory = new Inventory();
                        inventory.Name = item.Name;
                        inventory.GoodsSerial = item.Serial;
                        inventory.Unit = item.Unit;
                        inventory.Quant = item.Quant;
                        inventory.InsertDate = DateTime.Now;
                        inventory.GoodsTypeId = item.GoodsTypeId;
                        inventory.SpecId = item.SpecId;
                        inventoryService.Insert(inventory);
                    }
                    MsgWinHelper.ShowMessage("操作完成");
                    InventoryList = new InventoryService().Select(); 
                });

                return command;
            }
        }

        //加载数据
        public RelayCommand LoadCommand
        {
            get
            {
                return new RelayCommand(() =>
                {
                    InventoryList = new InventoryService().Select();
                });
            }
        }


        private List<Inventory> inventoryList = new List<Inventory>();
        /// <summary>
        /// 盘存集合
        /// </summary>
        public List<Inventory> InventoryList
        {
            get { return inventoryList; }
            set { inventoryList = value; RaisePropertyChanged(); }
        }

    }
}

4、运行效果

 

 

 

 

原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/757769.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决403 Forbidden错误的全面指南,快速解决403 Forbidden错误

在浏览互联网时&#xff0c;遭遇到“403 Forbidden”错误可以说是既常见又令人困惑。这个错误提示通常意味着服务器理解请求但拒绝授权访问。尽管它可能看起来让人无从下手&#xff0c;但通过一些方法通常可以找到原因并解决这个问题。 什么是403 Forbidden错误&#xff1f; “…

小到微妙:少女微笑

一、妙与不妙&#xff0c;少女与微笑 我们曾经解过汉字“妙”&#xff0c;妙字可以拆分为少女二字&#xff0c;即&#xff1a; 妙 女 少 少女 但这&#xff0c;其实并没有对 “妙”字 完成完整性解析&#xff0c;如果要完成完整性的说明&#xff0c;应当加上微笑&#xff0…

1、Python编程入门:从硬件基础到解释器类型

Python是一种免费、开源、跨平台、动态、面向对象的编程语言。它以其简洁易读的语法和强大的功能而闻名&#xff0c;广泛应用于各种领域&#xff0c;如Web开发、数据分析、人工智能等。本文将介绍Python的基本概念、执行方式以及常用的Linux命令&#xff0c;帮助初学者快速入门…

Ascend基于自定义算子工程的算子开发

环境准备 见https://gitee.com/zaj1414904389/ascend-tutorial.git 工程创建 CANN软件包中提供了工程创建工具msopgen&#xff0c;开发者可以输入算子原型定义文件生成Ascend C算子开发工程 [{"op": "AddCustom","input_desc": [{"name…

Java的NIO体系

目录 NIO1、操作系统级别下的IO模型有哪些&#xff1f;2、Java语言下的IO模型有哪些&#xff1f;3、Java的NIO应用场景&#xff1f;相比于IO的优势在哪&#xff1f;4、Java的IO、NIO、AIO 操作文件读写5、NIO的核心类 :Buffer&#xff08;缓冲区&#xff09;、Channel&#xff…

版本控制系统:Git 纯应用(持续更新)

基本操作 ctrl上行键&#xff1a;上次代码 本地仓库&#xff1a;Git init 新建文件&#xff1a;touch xxxx.xxx 查看状态&#xff1a;Git status 文件从工作区——暂存区&#xff1a;Git add ./文件名(.是通配符代表所有) 暂存区——仓库&#xff1a;Git commit -m &…

如何利用ChatGPT改善日常生活:一个普通人的指南

当你打开 ChatGPT&#xff0c;显现的是一个简洁的聊天界面。 许多人利用 ChatGPT 进行日常对话。 然而&#xff0c;ChatGPT 的功能远不止于此。 对话只是其众多能力中的一种&#xff0c;如果仅将其视为高级版的聊天机器人&#xff0c;那未免低估了它。 AI 在信息处理方面的…

【计算机毕业设计】073智慧旅游平台开发微信小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

力扣第一道困难题《3. 无重复字符的最长子串》,c++

目录 方法一&#xff1a; 方法二&#xff1a; 方法三&#xff1a; 方法四&#xff1a; 没有讲解&#xff0c;但给出了优秀题解 本题链接&#xff1a;4. 寻找两个正序数组的中位数 - 力扣&#xff08;LeetCode&#xff09; 话不多说&#xff0c;我们直接开始进行本题的思路解…

【Mybatis】Mybatis初识-通过源码学习执行流程

文章目录 1.Mybatis核心组件1.1 SqlSession1.2 SqlSessionFactory1.3 Mapper1.4 MappedStatement1.5 Executor 2. Mybatis各组件之间关系3. 构建SqlSessionFactory3.1 从XML文件中构建3.2 不使用XML构建SqlSessionFactory 4. 如何从SqlSessionFactory获取SqlSession5.获取Mappe…

计算机专业课面试常见问题-编程语言篇

目录 1. 程序的编译执行流程&#xff1f; 2. C浅拷贝和深拷贝的区别&#xff1f; 3. C虚函数&#xff1f; …

Linux --账号和权限管理

目录 1、 管理用户账号和组账概述 1.1 用户账号分类 1.2 组账号 1.3 UID 和 GID 2、用户账号文件 2.1 passwd 2.2 shadow 3、管理目录和文件属性 3.1 chage 命令 3.2 useradd 命令 3.3 passwd 命令 ​编辑3.4 usermod 命令 3.5 userdel 命令 4、用户账户的初始配置…

全面体验ONLYOFFICE 8.1版本桌面编辑器

ONLYOFFICE官网 在当今的数字化办公环境中&#xff0c;选择合适的文档处理工具对于提升工作效率和团队协作至关重要。ONLYOFFICE 8.1版本桌面编辑器&#xff0c;作为一款集成了多项先进功能的办公软件&#xff0c;为用户提供了全新的办公体验。今天&#xff0c;我们将深入探索…

【分布式系列】分布式锁的设计与实现

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

2024年【电工(初级)】考试内容及电工(初级)模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;考试内容参考答案及电工&#xff08;初级&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及电工&#xff08;初级&#xff09;操作证已考过的学员汇总&#xff0c;相对有…

博途TIA Portal「集成自动化软件」下载安装,TIA Portal 灵活多变的编程环境

在编程领域&#xff0c;博途TIA Portal以其卓越的编程工具和灵活多变的编程环境&#xff0c;为众多用户提供了前所未有的便利。这款软件不仅支持多种编程语言&#xff0c;如梯形图&#xff08;Ladder Diagram&#xff09;、功能块图&#xff08;Function Block Diagram&#xf…

linux的CP指令

实现 CP 指令 src 源文件 des 目标文件 执行流程&#xff1a; 打开源文件&#xff08; src &#xff09; open 打开目标文件&#xff08; des &#xff09; open 写入目标文件 write 读取 src 文件到缓存数组 read 关闭目标文件和源文件 close ./a.out src.c de…

Linux开发讲课22---I2C读写 EEPROM 实验(含代码)

EEPROM 是一种掉电后数据不丢失的存储器&#xff0c;常用来存储一些配置信息&#xff0c;以便系统重新上电的时候加载之。 EEPOM 芯片最常用的通讯方式就是 I2C 协议&#xff0c;本小节以 EEPROM的读写实 验为大家讲解 STM32 的 I2C 使用方法。实验中 STM32 的 I2C 外设采用主模…

漫步5G-A City,一份独属于上海的浪漫

作家亨利詹姆斯曾写道&#xff0c;“城市漫步&#xff0c;让我接触到了这个世界上最好的东西”。 用漫无目的地行走&#xff0c;来体验和观察一座城市&#xff0c;上海凭借丰富多元的文化特质&#xff0c;成为citywalk这种浪漫生活方式的流行地。 无论你是漫步在美术馆、画廊林…

Linux shell编程学习笔记60:touch命令

0 前言 在csdn技能树Linux入门的练习题中&#xff0c;touch是最常见的一条命令。这次我们就来研究它的用法。 1 touch命令的功能、格式和选项说明 我们可以使用touch --help命令查看touch命令的帮助信息。 [purpleendurer bash ~ ]touch --help Usage: touch [OPTION]... …